我在Windows Server 2012(64位)上使用30.5 GB的RAM,在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- uses_0021
这表明64位实例的内存限制默认为RAM的总量,并且可以使用memory.limit()检查和设置限制.
致电memory.limit()返回31249,确认它能够看到并使用所有30场演出.
但是,当我在大型数据集(~10M行)上进行建模调用时:
ctree(as.formula(formula), data=d, control=ctree_control(mincriterion=0.9, minbucket=1000))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'Calloc' could not allocate memory (18446744073673801728 of 8 bytes)
Run Code Online (Sandbox Code Playgroud)
但是看看系统任务管理器,我可以看到超过25GB仍然可用,而R只使用2.3GB.
在RStudio外部和R中运行建模直接产生相同的结果,因此RStudio不是变量.
我很困惑 - 为什么R拒绝使用我的所有记忆?
问题是该函数底层的 C 代码中存在错误ctree()(@JoshuaUlrich 正确地怀疑了这一点)。原因是整数溢出,现已在该包构建libcoin的包版本 1.0-2中修复。partykit
(评论:我们之前没有了解到这个错误,因为该party标签没有用于 StackOverflow 上的问题,并且直到今天才向软件包维护者报告该问题。感谢 Kris Joanidis 报告了该问题并提供了补丁, 非常感谢。)
| 归档时间: |
|
| 查看次数: |
5788 次 |
| 最近记录: |