使用for循环将列添加到数据框

时间:2014-04-08 18:39:58

标签: r

我是R的新手,看起来这应该不是一项艰巨的任务,但我似乎无法找到我想要的答案。我试图使用for循环向数据框添加多个向量。这就是我到目前为止所做的工作,只要添加正确的列,但变量名称不正确。我能够通过使用rename.vars来修复它们,但是想知道是否有办法不这样做。

for (i in 1:5) {
    if (i==1) {
    alldata<-data.frame(IA, rand1) }
    else {
    alldata<-data.frame(alldata, rand[[i]]) }
}

而不是变量名称为rand2,rand3,rand4,rand5,它们显示为rand..i ..,rand..i ... 1,rand..i ... 2和rand ..我... 3。

任何建议?

3 个答案:

答案 0 :(得分:1)

您可以使用colnames功能设置变量名称。因此,您的代码看起来像:

newdat <- cbind(IA, rand1, rand[2:5])
colnames(newdat) <- c(colnames(IA), paste0("rand", 1:5))

答案 1 :(得分:0)

cbind(IA, rand1, rand[2:5])

答案 2 :(得分:0)

如果您在循环中创建变量,则可以在循环期间指定名称

alldata <- data.frame(IA)
for (i in 1:5) {alldata[, paste0('rand', i)] <- rand[[i]]}

但是,R在循环中确实很慢,所以如果您尝试使用数万列来执行此操作,cbind和重命名方法会更快。