8

我在具有 30.5 GB RAM 的 Windows Server 2012(64 位)上,在 RStudio 0.98 中运行 R v3.1.2,并且仍然遇到 R 达到内存限制的问题。

我在这里查看了常见问题解答:http: //cran.r-project.org/bin/windows/base/rw-FAQ.html#There-seems-to-be-a-limit-on-the-memory-it-用途_0021

其中指出 64 位实例的内存限制默认为 RAM 总量,并且可以使用 memory.limit() 检查和设置限制。

调用memory.limit()返回31249,确认它能够查看和使用所有 30 个演出。

但是,当我对大型数据集(约 10M 行)进行建模调用时:

ctree(as.formula(formula), data=d, control=ctree_control(mincriterion=0.9, minbucket=1000))

我收到以下错误:

'Calloc' could not allocate memory (18446744073673801728 of 8 bytes) 

但是查看系统任务管理器我可以看到仍然有超过 25GB 可用,而 R 只使用了 2.3GB。

在 RStudio 之外和 R 中直接运行建模会产生相同的结果,因此 RStudio 不是变量。

我很困惑 - 为什么 R 拒绝使用我所有的内存?

4

1 回答 1

4

问题是函数底层的 C 代码中的一个错误ctree()(正如@JoshuaUlrich 正确怀疑的那样)。原因是一个整数溢出,现在已在包构建的libcoin包版本 1.0-2 中修复partykit

(评论:我们之前没有了解到这个错误,因为party在 StackOverflow 上的问题中没有使用该标签,并且直到今天才将问题报告给包维护者。感谢 Kris Joanidis 报告了问题并提供了补丁, 非常感谢。)

于 2018-12-14T00:43:06.997 回答