【问题标题】:How to increase memory in R如何在 R 中增加内存
【发布时间】:2018-06-17 08:26:47
【问题描述】:

我在 Windows 7 64 位上运行 R 64 位。在运行我的脚本时,我收到一条错误消息,无法分配大小为 x 的向量(在我的情况下约为 200MB)。我的 data.frame 有大约 200.000 行,而不是更多。怎么会没有足够的存储空间来分配另一个向量呢? 我知道该操作本身可以工作,因为脚本通过一个较小的子集文件运行。

我也知道以前有人问过这个问题,但没有一个答案能解决我的问题。有很多不同的答案——哪一个是正确的?是和系统的RAM有关还是和R的内存有关?

我手动增加了内存大小:

memory.limit()
# set max memory usage is 2G
memory.size(max=10000)

然后 r 表示内存限制为 10.000

memory.limit()
[1] 10000 

但仍然有同样的错误。甚至是相同大小的vector无法分配。

我清理了我的电脑并在我的驱动器上设置了更多可用空间。但它也不会改变任何东西。

取决于内存大小以及如何增加它?

【问题讨论】:

  • 您能提供一个example that reproduces the problem 吗?这也可能与您编写代码的方式有关。
  • 您进行的其中一项计算需要大量内存。内存需求会随着数据大小呈二次方甚至更差。如果没有在可重现的示例中显示您的代码,则没有太多建议可以提供。您可以随着数据大小的增加分析内存需求,并预测整个数据集的需求。
  • 好的,感谢您的简短解释。有时一些背景信息就足够了。我将尝试拆分代码并摆脱一些垃圾。

标签: r memory memory-management


【解决方案1】:

就像人们一直在评论一样,需要查看您的实际代码才能获得更具体的答案。

但是,您可以考虑以下几点:

i) 在脚本中对辅助/中间对象/结果使用 remove()rm() 函数

ii) 阅读 gc() 函数的帮助,该函数显式触发垃圾收集(通常不需要,但在某些情况下这是合理的)

【讨论】:

  • 手动调用gc 通常无济于事,反而有害(至少是性能)。
猜你喜欢
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
相关资源
最近更新 更多