如何快速查找多个(&x2B;1000)*.rds文件

如何快速查找多个(&x2B;1000)*.rds文件,r,R,我有超过2000个*.rds文件,它们是18000个obs,我想将它们合并成一个data.frame。我知道使用for循环来增长对象是没有效率的,而且我已经这样做了,但这需要很长时间。有没有更快的方法 以下是我迄今为止尝试过的几件事: lappy: mergedat <- do.call(rbind, lapply(list.files("dat/"), readRDS)) 看起来你的第一次尝试很接近。稍加修改后,以下内容对我有效 mergedat <- do.call('rbin

我有超过2000个*.rds文件,它们是18000个obs,我想将它们合并成一个
data.frame
。我知道使用
for
循环来增长对象是没有效率的,而且我已经这样做了,但这需要很长时间。有没有更快的方法

以下是我迄今为止尝试过的几件事:

lappy

mergedat <- do.call(rbind, lapply(list.files("dat/"), readRDS))

看起来你的第一次尝试很接近。稍加修改后,以下内容对我有效

mergedat <- do.call('rbind', lapply(list.files("dat/", full.names = TRUE), readRDS))

mergedat在某些极端情况下,引用函数可能会更快(ala
do.call(“rbind”,…
)。不过,在这种情况下,您是否在我的测试中尝试过
dplyr::bind_rows
?(使用小数据.frames),它的运行速度几乎快了一个数量级。@r2evans我没有尝试过
dplyr
选项;我想我也会尝试一下。
data.table::rbindlist
也值得一试。@Gregor就是这样。它在不到一分钟的时间内将所有内容与
rbind
合并,花了20多个时间。谢谢!仅供参考,第一个
do.call
是缺少尾随的
OP没有说它不工作。OP说要花点时间才能完成。谢谢,但这两个我都建议你去做。他们只是需要很长时间。有没有办法加快速度?好的,明白了。原来的帖子中有一个拼写错误,我会在那里发表评论。也许我应该删除这个答案,Gregor应该把这个建议改成“答案”来获得好评。
mergedat <- do.call('rbind', lapply(list.files("dat/", full.names = TRUE), readRDS))