R合并大量数据帧

时间:2017-12-18 19:12:50

标签: r list merge concatenation rda

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

内存不是一个大问题,因为我在一台内存大于700GB的服务器上运行它, 我的第一种方法是逐步加载它们与合并的列表对象连接并删除附加的对象由于它将要花费的时间而严重损坏(最好的猜测是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_")))

由于

0 个答案:

没有答案