2017-08-14 57 views
0

我有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")) 
} 
+0

你想要一个“a”列还是多个“a”列,如果是后者,是否所有的数据帧都有相同的行数? –

+0

所有这10个数据集都是模型的输出,即它们具有相同的列名称。我对他们每一个的列“a”感兴趣,并且评估数据框具有真正的值。所以我想要一个数据帧,它有真正的a,a来自df1,a来自df2,来自df3等。 – HelMel

回答

0

如果你想只是每次a列data.frame你可以试试:

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的列。

+0

数据中缺少一个右括号= ..我认为应该在} 然而,我得到以下错误: do.call(rbind,data)中的错误:第二个参数必须是列表 – HelMel

+0

您可以共享预测数据的“dput”吗? – count

+0

我不确定输入是什么。但是,我发现我的错字。但是,在修复它时,我得到了下一个错误: 名称(x)中的错误< - 值: '名称'属性[1]的长度必须与矢量[0]的长度相同。由于这些文件位于我的工作目录中,因此我现在只使用了read.csv(文件[x]),并且不再有数据问题。但是我收到一个新错误: match.names(clabs,names(xi))中的错误: 名称与先前的名称不匹配 – HelMel

相关问题