附加到数据框中的每一行

时间:2015-03-12 06:11:15

标签: r

现在已经很晚了,这很容易......

假设:

a <- c(1,2)
b <- c(3,4)
foo <- data.frame(a,b)
a.leading <- rep(0, 2)

如何将f.leading附加到foo中的每一行看起来像这样?

   V1 V2 a b
 1 0  0  1 3
 2 0  0  2 4

我知道我只能将V1和V2仅用于0,但是如何使用循环或向量化函数来做到这一点? V1和V2不一定是名字;如果需要,我可以稍后更改。

2 个答案:

答案 0 :(得分:1)

以下是一种可用于向数据框添加列的方法,保留相同的行数:

new_cols <- c("V1", "V2")   # new columns "V1" and "V2"
foo[new_cols] <- 0          # assigns 0 to each cell in the new columns

答案 1 :(得分:1)

你不应该真正循环,除非它是必要的或更有效的。在这里,您要将列添加到类似矩阵的结构中,cbind()可能是最好的方法。

您可以在...中为cbind.data.frame()参数构建一个列表,并使用do.call()调用它。

do.call(cbind.data.frame, c(V = as.list(a.leading), foo))
#   V1 V2 a b
# 1  0  0 1 3
# 2  0  0 2 4

如果您不喜欢,也可以

cbind.data.frame(as.list(c(V = a.leading)), foo)
#   V1 V2 a b
# 1  0  0 1 3
# 2  0  0 2 4