R在硬盘上存储的多个数据帧上高效地绑定_行
我大约有50000个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
.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可能是重复的吗?如果您将每个文件保存在一个列表中,然后再取消对它的测试(),我相信您不必每一步都重写内存中的所有文件。行的连续绑定速度变慢了。这是否回答了您的问题?