【发布时间】:2021-11-16 05:02:50
【问题描述】:
我想在我的数据框中添加一列,该列从 0 开始,每行递增 0.002,直到数据框结束。
我试过了:
NewCol <- seq(0,len(DF),0.002))
DF <- cbind(DF, NewCol)
我想要的输出是: 0.00 0.002 0.004 0.006 ...到数据框的末尾
NewCol 长度太长,无法绑定到我的数据框。
【问题讨论】:
我想在我的数据框中添加一列,该列从 0 开始,每行递增 0.002,直到数据框结束。
我试过了:
NewCol <- seq(0,len(DF),0.002))
DF <- cbind(DF, NewCol)
我想要的输出是: 0.00 0.002 0.004 0.006 ...到数据框的末尾
NewCol 长度太长,无法绑定到我的数据框。
【问题讨论】:
我们可以在 seq 函数中使用 nrow ,就像这样
df <- data.frame(a = c(1:5), b = 6:10)
a b
1 1 o
2 2 c
3 3 p
4 4 u
5 5 d
df$num = seq(0, by = 0.002, to = nrow(df)*0.002 - 0.002)
# simplified by @Ritchie Sacramento to
df$num = seq(0, by = 0.002, length.out = nrow(df))
a b num
1 1 o 0.000
2 2 c 0.002
3 3 p 0.004
4 4 u 0.006
5 5 d 0.008
【讨论】:
seq(0, to = 1, by = 0.2) 将返回一个长度为 6 的向量,因为它同时包含 0 和 1。当我们将它添加到 data.frame 时,R 会抛出一个错误(您可以尝试 df$test = 1:6)。所以我们只是要求它在序列中少返回 1 步。然而,正如@RitchieSacramento 所指出的,存在length.out 参数可以为我们做到这一点。