R,Python,rpy2:“错误:无法分配大小为xxx Mb的向量”

时间:2018-10-30 21:16:33

标签: python r memory rpy2

我使用R 3.5.1开发Python 3.7。 当我从Python的R脚本调用函数时,它在原则上可以正常工作,但是最后它崩溃并显示输出:

  

rpy2.rinterface.RRuntimeError:错误:无法分配大小为1006.0 Mb的向量

我有16GB的RAM,在长时间的处理过程中,我检查了内存使用的波动,最大波动小于5GB。

为了使事情更加确定,我使用

跟踪了内存使用情况
gc() 
gcinfo(TRUE)

它会自动转储垃圾并跟踪R何时这样做。

此外,在R中,我得到以下内容,指示16k MB,这是我的所有默认RAM:

> memory.limit()
[1] 16244

最后,当我直接从R运行R脚本时,它运行良好,并且没有遇到内存问题。

这是rpy2的强大漏洞还是目前可以管理的其他漏洞?如果有人有任何建议,我们将竭诚为您服务。

操作系统:Windows 10,64位

1 个答案:

答案 0 :(得分:0)

来自此thread

  

这似乎是由于... R向量与Python数组之间难以协调的差异引起的。

我建议您执行以下操作作为解决方法:

  • 通过R和Python的相互访问位置传递矢量数据(例如,数据库,公共文件夹中的csv文件等)
  • 在rpy2页面上打开一个票证(或继续链接的线程)
  • 将数据分解(如果可能的话)到最大大小,可以通过rpy2传输并循环遍历,直到覆盖整个数据集(也许对双方进行小的改动即可实现,具体取决于您的代码)< / li>
  • 考虑线程中提供的一种转换类型,例如:

    from rpy2.robjects import conversion df_R = conversion.converter.py2ri(df_pandas)

主持人注意:这可能是评论,但我无法发表评论