我有一个9列data.frame(x),它有数百万行。我能够将它读入R,成功对其进行了一些修改,并且代码可以毫无问题地执行。然而,当我试着写出来使用使用write.csv时出现内存错误
write.csv(x,file=argv[2],quote=F,row.names=F)
我得到它说
Error: cannot allocate vector of size 1.2Gb
这是没有意义的数据已经在内存错误.csv文件,该计算完成,我想要做的就是将它写出到磁盘。另外,当我监视内存时,在此写入阶段,虚拟内存大小几乎增加了一倍。会写一个自定义的C函数来写出这个data.frame的帮助?任何建议/帮助/指针表示赞赏。
ps:我在一个64位的ubuntu机器上运行所有这些,大约有24G RAM。整体空间可能不是问题。数据大小约为10G
最简单的事情就是用'append = TRUE'将它写入小文件中。另外,机器上安装的RAM总量可能是误导性指标,表明您是否会遇到内存问题,因为R经常需要特定大小的_连续_块内存。即使使用24Gb,寻找10个连续的Gb内存有时也是一个挑战。 – joran
@joran说了些什么。您可以立即尝试'gc()',但这不太可能有帮助。 –
您可以尝试将对象保存为.RData图像,并将其加载到新会话中。出于某种原因,它比计算后直接消耗的内存少。当我遇到内存问题时,我有时会使用这个技巧。 –