1

我有一个数据提交的输出,它是 rda 文件中的多个向量列表对象的形式。每个列表对象都在一个单独的 rda 文件中,我有近 2000 个文件。我想以最快的方式将所有对象合并到单个 rda 文件中的单个对象中(部分原因是我可能需要重复几次)。所有的 rda 文件都相当小(约 10mb,尽管这将是一个压缩大小),但它们都与文件的数量相加。

内存不是一个大问题,因为我在具有 > 700GB RAM 的服务器上运行它,我第一种增量加载它们的方法与合并的列表对象连接并删除附加的对象,因为它的时间很糟糕将采取(最好的猜测大约是 40 天)。我修改后的方法如下,但想知道是否有更快的方法来做到这一点,因为我可能需要重复这个过程:

 load("data_1.rda") 
 load("data_2.rda") 
 load("data_3.rda") ... 
 load("data_2000.rda")
 my.list <- list() 
 my.list <- c(my.list, data.1, data.2, data.3, ... , data.2000) 
 save(my.list, file="my_list.rda")

只是为了增加我在执行此操作时遇到错误的内容:

错误:尝试在 SET_STRING_ELT 中设置索引 18446744071562067968/2877912830

这不是一个非常有用的错误消息所有 rdas 都作为对象加载到环境中很好,但是当我尝试连接它们时,我收到了错误消息,它似乎是当它到达特定点时,因为它没有不要立即失败。不确定它是否是您可以执行的连接数量或流氓数据的某种限制,但对其进行故障排除似乎是语法而不是数据相关。已将其分成 5 批,然后在保存 rda 之前进行最终连接。已经看到建议使用 rbind、mget 和 do.Call 或 list 函数的此类事情的其他答案 - 使用这些函数中的任何一个会使其更快并实现相同的目标吗?像这样的东西:

my.list <- do.call(rbind, mget(ls(pattern="^data_")))

谢谢

4

0 回答 0