我收到的消息是:
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运行或其他什么?无论这将需要发生什么。
再次感谢你!
我遇到过类似的情况,这是因为文本与因素合并造成的。我通过将因子转化为字符来解决它。