我有两个文件夹具有相同名称的文件夹。例如 - FOLDER1有a.csv,b.csv,c.csv,同样FOLDER2有a.csv,b.csv,c.csv
文件具有不同的行数,但列数和名称相同
我想组合具有相同名称的文件,并将它们写入名为a.csv,b.csv c.csv的文件中。
这只是一个例子,我想为800-1000个文件做这件事。
我试过
filenames <- list.files(c(filePathNew,filePath), pattern="*.csv", full.names=TRUE)
lst1 <- lapply(split(filenames, basename(filenames)),function(x) do.call(rbind,
lapply(x,function(y) read.csv(y, header = TRUE, stringsAsFactors = FALSE, sep = ""))))
lapply(seq_along(lst1), function(i) write.csv(lst1[[i]], paste(filepath,names(lst1)[i], sep = "/"), row.names = FALSE,
quote = FALSE))
但它显示以下错误
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
Called from: stop("numbers of columns of arguments do not match")
答案 0 :(得分:0)
再次更新
正如您现在已经表明您拥有Windows一样,您可以使用保存为CONCAT.BAT
CD FOLDER1
MKDIR COMBINED
FOR %%G IN (*.CSV) DO COPY "%%G"+FOLDER2\"%%G" COMBINED\"%%G"
然后做
system("CONCAT.BAT", intern=FALSE)
更新了答案
由于您的文件数量超过了最初建议的3,因此您可以使用名为concat
的脚本:
#!/bin/bash
cd FOLDER1
for f in *.csv; do cat "$f" FOLDER2/"$f" > "combined${f}"; done
并使其可执行并使用
运行它system("chmod +x concat; ./concat", intern=FALSE)
原始答案
如果在Unix / Linux上,请尝试:
system("cat FOLDER1/a.csv FOLDER2/a.csv > aCombined.csv", intern=FALSE)
如果在Windows上,请尝试:
system("copy FOLDER1\a.csv+FOLDER2\a.csv aCombined.csv", intern=FALSE)