R合并循环

时间:2018-05-17 08:58:05

标签: r loops merge

我有很多想要读取的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"))
}

2 个答案:

答案 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中所述。