我有很多想要读取的csv文件,然后与更大的文件合并(每个文件单独合并)。所以我写了这个函数来读取文件(作品):
read <- function(x) {
read.csv(paste("StringCount_Length=", x, ".csv", sep = ""), header=TRUE, sep=",")
}
现在我想遍历文件,阅读并合并它们。但是,合并不起作用给我这个错误消息:
fix.by(by.x,x)出错:&#39;&#39;必须指定唯一有效的列
如果我在merge命令中放入一个特定的文件,我就不会收到错误,所以我的错误必须在那里,但我不能完全看出我哪里出错了。 将不胜感激任何帮助或建议!
for (x in c(2:5)) {
assign(paste("data", x, sep=""), read(x))
assign(paste("data_total_",x, sep=""), merge(paste("data", x, sep=""), data_old, by="Subject"))
}
答案 0 :(得分:1)
与 assign 函数类似,您将对象分配给名称字符串,您需要使用 get 函数,在该函数中使用名称字符串调用对象对象而不是直接使用对象名。
下面的代码应该完成我们使用get函数封装paste函数的工作。
e.g。对于x = 2,将使用get(&#34; data2&#34;)函数调用访问data2数据帧
for (x in c(2:5)) {
assign(paste("data", x, sep=""), read(x))
assign(paste("data_total_",x, sep=""),
merge(get(paste("data", x, sep="")), data_old, by="Subject"))
}
答案 1 :(得分:0)
此外,您可能需要考虑使用data.tables列表,并使用Reduce进行组合,如answer中所述。