R重复将不同数据框中的相似列添加到一个数据框

时间:2017-08-14 11:28:16

标签: r for-loop sapply

我有10个数据集:prediction1.csv,prediction2.csv,...它们都有类似的列,例如a,b,c ..

我想添加" a"将每个数据集中的列组合成一个组合数据框"评估"并相应地重命名它们a1,a2,a3 ..

到目前为止我尝试的是:

我在数据集中红了。这部分工作正常

for(i in 1:10){
  assign(paste("pred.", i, sep = ""), read_csv(paste0("prediction", i, ".csv")))    
}

我尝试将新列分配给"评估"数据框,但这不起作用,它创建变量evaluating[a1]而不是向数据框添加变量

for(i in 1:10){  
    assign(paste("evaluating[a.", i,"],"), paste0("pred.",i,"$a" )) 
}

1 个答案:

答案 0 :(得分:0)

如果您只想要每个data.frame的a列,您可以尝试:

files = paste0("prediction",1:10,".csv")

data = lapply(seq_along(files),function(x) {
    dat = read.csv2(paste0("path/to/file/",files[x]))
    dat = data.frame(dat$a) ; colnames(dat) = paste0("a",x)
    return(dat)
})

do.call(rbind,data)

对于此方法,所有prediction data.frames都需要具有相同数量的行以及名为a的列。