友 我得到了以下代码,用于组合特定文件夹中的多个csv文件,帮助我尝试此代码的人,对他来说效果很好......但是当我使用它时,它是不显示任何错误,但在输出我只得到标题而不是数据。
你能告诉我如何克服这个问题吗? 代码如下所示,setwd("C:/Users/dsuresh/Desktop/io")
multmerge = function(mypath){
filenames=list.files(path=mypath, full.names=TRUE)
datalist = lapply(filenames, function(x){read.csv(file=x,header=T)})
Reduce(function(x,y) {merge(x,y)}, datalist)
}
mydata=multmerge("C:/Users/dsuresh/Desktop/io")
View(mydata)
谢谢你的朋友们......
答案 0 :(得分:1)
我认为你的文件不合适.csv(逗号分隔值文件)。尝试用read.csv
替换read.table
函数并检查。否则此功能没有问题。如果不起作用,请尝试使用rbind
而不是merge
。 merge函数匹配数据中的两列然后合并。如果您的数据没有相同的rownames或列,则无法正常工作。
答案 1 :(得分:0)
rbind
在您的情况下完美无缺。
csvFile1 = "col1,col2,col3\na1,a2,a3\nb1,b2,b3"
csvFile2 = "col1,col2,col3\nc1,c2,c3\nd1,d2,d3"
csvFile3 = "col1,col2,col3\ne1,e2,e3\nf1,f2,f3"
con1 = textConnection(csvFile1)
con2 = textConnection(csvFile2)
con3 = textConnection(csvFile3)
csvList = list(con1, con2, con3)
multmerge = function(files){
datalist = lapply(files, read.csv)
Reduce(rbind, datalist)
}
mydata=multmerge(csvList)
View(mydata)
此外,您只能do.call(rbind, datalist)
代替Reduce
而且您无需在header=T
中指定read.csv
- 它是默认选项。