如何快速查找多个(&x2B;1000)*.rds文件
我有超过2000个*.rds文件,它们是18000个obs,我想将它们合并成一个如何快速查找多个(&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
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在某些极端情况下,引用函数可能会更快(alado.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))