R Merging Help - 无法分配大小为215.2 Mb的向量

问题描述 投票:0回答:1

我收到的消息是:

cannot allocate vector of size 215.2 Mb

215.2对我来说似乎并不大,特别是当我看到的例子是在10 Gb的平流层时。

以下是我想要完成的事情:

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

所以一个非常基本的左连接。

主题你有28,202,411条记录,有16列。 o2017有109,850条记录,共94列。

完成这一次后,我还需要做三次非常相似的合并。

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

另外,会提前按主题键对两个数据帧的大小进行排序吗?

在我尝试完成此操作时,我将五个数据帧加载到我的内存中。下面是我的计算机发生的一些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运行或其他什么?无论这将需要发生什么。

再次感谢你!

r memory merge
1个回答
0
投票

我遇到过类似的情况,这是因为文本与因素合并造成的。我通过将因子转化为字符来解决它。

© www.soinside.com 2019 - 2024. All rights reserved.