【发布时间】:2017-02-14 00:54:41
【问题描述】:
我正在处理大型数据集,并且 R 经常会产生一个错误,告诉它无法分配该大小的向量或者它没有足够的内存。
我的计算机有 16GB RAM (Windows 10),我正在处理大约 4GB 的数据集,但某些操作需要大量内存,例如将数据集从宽格式转换为长格式。 在某些情况下,我可以使用 gc() 来释放一些内存,但很多时候这还不够。
有时我可以将数据集拆分成更小的块,但有时我需要同时处理所有表。
我听说 Linux 用户没有这个问题,但是 Windows 呢?
我尝试在 SSD (200GB) 上设置一个大页面文件,但我发现 R 根本不使用它。
我可以看到任务管理器,当内存消耗达到 16GB 时,R 停止工作。页面文件的大小似乎没有任何区别。
如何强制 R 使用页面文件? 我需要自己编译一些特殊的标志吗?
PD:我的经验是删除对象 rm() 并稍后使用 gc() 不会恢复所有内存。当我对大型数据集执行操作时,无论我是否使用 gc(),我的计算机在每一步的可用内存都越来越少。
PD2:我希望不会听到诸如“您需要更多 RAM 内存”之类的琐碎解决方案
PD3:我一直在测试,问题只发生在 Rstudio。如果我直接使用 R 效果很好。有谁知道如何在 RStudio 中做到这一点。
【问题讨论】:
-
内存并不贵。如果您需要不寻常的大量(超过 32 GB),您可以随时在线租用。即使您设法使用 SSD 内存,这也会减慢您的分析速度。
-
@Roland,这不是问题的解决方案,它只是一个补丁。
-
你总是可以安装 linux ...
-
我从未尝试过,但您可以尝试增加 R_MAX_MEM_SIZE。如果您正确设置了窗口,则可能(我从未尝试过)使用您的页面文件。 cran.r-project.org/bin/windows/base/…
-
好的,我一直在测试,问题只发生在 Rstudio。如果我直接使用 R 效果很好。