我正在使用R进行一些数据分析.系统规格:i5 + 4GB RAM.出于某种原因,我的R会话占用了比我的数据大得多的RAM,这让我只有很少的空间用于其他操作.
我读了一个550MB的csv文件,R占用的内存:1.3 - 1.5GB 我把csv保存为.RData文件.文件大小:183MB.在R中加载文件,R占用的内存:780MB.知道为什么会发生这种情况以及如何解决这个问题?
编辑:该文件有123列和1190387行.变量是类型num和int.
bde*_*est 16
数值(双精度浮点)存储在8个字节的ram中.
整数值(在本例中)使用4个字节.
您的数据有1,190,387*123 = 146,417,601个值.
如果所有列都是数字,则使用了1,171,340,808字节的ram(~1.09GB).
如果all都是整数,则需要585,670,404个字节(~558MB).
因此,您的数据使用780MB RAM是完全合理的.
非常一般的建议:
R使用更多内存可能是因为某些对象的复制.虽然这些临时副本被删除,但R仍占用空间.要将此内存返回给操作系统,您可以调用该gc功能.但是,当需要内存时,gc会自动调用.
此外,550 mb csv文件映射到R中的550 mb并不明显.这取决于列(float,int,character)的数据类型,它们都使用不同的内存量.
由于R压缩数据,因此Rdata文件较小的事实并不奇怪,请参阅文档save.