gpt4 book ai didi

重复向量以填充数据框中的列

转载 作者:行者123 更新时间:2023-12-02 09:25:08 24 4
gpt4 key购买 nike

似乎这个非常简单的操作曾经对我有用,现在它根本不起作用。问题的虚拟版本:

df <- data.frame(x = 1:5) # create simple dataframe
df
x
1 1
2 2
3 3
4 4
5 5

df$y <- c(1:5) # adding a new column with a vector of the exact same length. Works out like it should
df
x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

df$z <- c(1:4) # trying to add a new colum, this time with a vector with less elements than there are rows in the dataframe.

Error in `$<-.data.frame`(`*tmp*`, "z", value = 1:4) :
replacement has 4 rows, data has 5

我期待这与以下结果一起工作:
 x y z
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 1

IE。较短的向量应该开始自动重复。我很确定这曾经对我有用(它在我之前运行过一百次的脚本中没有问题)。现在我什至无法让上面的虚拟示例像我想要的那样工作。我错过了什么?

最佳答案

如果vector可以被均匀回收,放入data.frame中,就不会得到和error或者warning:

df <- data.frame(x = 1:10)
df$z <- 1:5

这可能是您之前所经历的。

您可以使用 rep_len 使您的矢量适合您提到的:
df$y <- rep_len(1:3, length.out=10)

这导致
df
x z y
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 1
5 5 5 2
6 6 1 3
7 7 2 1
8 8 3 2
9 9 4 3
10 10 5 1

请注意代替 rep_len ,您可以使用更常见的 rep功能:
df$y <- rep(1:3,len=10)

来自 rep 的帮助文件:

rep.int and rep_len are faster simplified versions for two common cases. They are not generic.

关于重复向量以填充数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com