R在硬盘上存储的多个数据帧上高效地绑定_行

R在硬盘上存储的多个数据帧上高效地绑定_行,r,dplyr,R,Dplyr,我大约有50000个.rda文件。每个都包含一个名为results的数据帧,其中只有一行。我想将它们全部附加到一个数据帧中 我尝试了以下方法,但效果很慢: root_dir <- paste(path, "models/", sep="") files <- paste(root_dir, list.files(root_dir), sep="") load(files[1]) results_table = results rm(results) for(i in c(2:len

我大约有50000个
.rda
文件。每个都包含一个名为
results
的数据帧,其中只有一行。我想将它们全部附加到一个数据帧中

我尝试了以下方法,但效果很慢:

root_dir <- paste(path, "models/", sep="")
files <- paste(root_dir, list.files(root_dir), sep="")
load(files[1])
results_table = results
rm(results)

for(i in c(2:length(files))) {
  print(paste("We are at step ", i,sep=""))
  load(files[i])
  results_table= bind_rows(list(results_table, results))
  rm(results)
}

root\u dir这是未经测试的代码,但应该非常有效:

root_dir <- paste(path, "models/", sep="")
files <- paste(root_dir, list.files(root_dir), sep="")

data_list <- lapply("mydata.rda", function(f) {
  message("loading file: ", f)
  name <- load(f)                    # this should capture the name of the loaded object
  return(eval(parse(text = name)))   # returns the object with the name saved in `name`
})

results_table <- data.table::rbindlist(data_list)

root\u dir使用
.rds
稍微容易一点。但如果我们仅限于
.rda
,以下内容可能会有用。我不确定这是否比您所做的更快:

库(purrr)
图书馆(dplyr)
图书馆(tidyr)
##制作一些示例数据并将其写入.rda

x可能是重复的吗?如果您将每个文件保存在一个列表中,然后再取消对它的测试(),我相信您不必每一步都重写内存中的所有文件。行的连续绑定速度变慢了。这是否回答了您的问题?