【发布时间】:2017-07-07 15:42:58
【问题描述】:
我有 6 个多个文件,每个文件只有 1 列名称。我想读取所有这些文件并将它们组合在 1 个数据框中,使其看起来像这样:
file1 file2 file3 file4 file5 file6
adam adam adam adam adam adam
Roy NA Roy Roy NA NA
NA Sam Sam NA NA NA
结果数据框的colnames 应该代表实际的文件名。假设我读取的文件名为file1.txt、file2.txt 等等..
任何帮助将不胜感激。
到目前为止我一直在尝试什么:
multmerge = function(mypath){
+ filenames=list.files(path=mypath, full.names=TRUE, pattern = "\\.txt$")
+ datalist = lapply(filenames, function(x){read.csv(file=x,header=F)})
+ Reduce(function(x,y) {merge(x,y, all.x=T)}, datalist)}
> mymergeddata = multmerge("/Path/To/The/Folder/Having/All/Files")
> dim(mymergeddata)
[1] 11508 1
如此处所示,它将所有值 (names) 组合在一列中..
【问题讨论】:
-
而不是
Reduce行,试试do.call(cbind,datalist) -
@AndrewGustar data.frame 中的错误(...,check.names = FALSE):参数暗示不同的行数:11508、10307、9917、9798、12167