现在已经很晚了,这很容易......
假设:
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不一定是名字;如果需要,我可以稍后更改。
答案 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