R合并帮助-无法分配大小为215.2 Mb的向量

时间:2018-08-29 19:34:33

标签: r memory merge

我收到的消息是:

cannot allocate vector of size 215.2 Mb

215.2对我来说似乎并不那么重要,尤其是当我看到的示例在10 Gb的平流层中时。

以下是我要完成的工作:

Combined<-merge(x=SubjectsYOY,y=o2017,by="subjectkey",all.x=TRUE)

一个非常基本的左联接。

SubjectsYOY拥有28,202,411条带有16列的记录。 o2017年有109,850条记录和94列。

完成此操作后,我还需要进行三遍非常相似的合并。

我试图通过将对象保存到计算机上的.rda文件,关闭R,然后首先加载.rda来大大减少内存负载。显然没有用。另外,尝试避免删除列-处理这么多记录时,也许有一个更宽容的命令而不是合并?

还,提前按subjectkey对两个数据框的大小进行排序会有所帮助吗?

在尝试完成此操作时,我已将五个数据帧加载到内存中。以下是一些有关计算机状态的sessionInfo:

sessionInfo()

R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
loaded via a namespace (and not attached):
[1] compiler_3.4.3 plyr_1.8.4     tools_3.4.3    yaml_2.2.0     Rcpp_0.12.17

尾端内容如下:

所以我做了一些实验,并查看了memory.limit。

memory.limit()

它自动设置为32676。

现在,我使用以下内容对其进行了更改:

memory.limit(326760+10000)

我的第一个大合并成功了!

现在我还有3个合并。下一个是o2018,它又有94个唯一的新列需要添加到之前创建的列中:16 + 94,现在+ 94列。好多!

所以我尝试在不了解内存管理的情况下再次更改内存限制:

memory.limit(32676000+10000)

现在请注意那里的两个额外零。但是现在我又遇到了同样的原始错误。

有人认为将这些多个合并合并为一个合并会有帮助吗?那是什么代码?这是最好的代码,还是我应该尝试模拟SQL运行或其他?不管这将发生什么。

再次感谢您!

1 个答案:

答案 0 :(得分:0)

我曾经遇到过类似的情况,那是由于将文本合并为因素引起的。我通过将因素变成字符来解决它。