【发布时间】:2023-03-09 00:49:01
【问题描述】:
我有一个 R 对象 (.rda) 文件,我想将它加载到 python 中的一个 numpy 数组中。不幸的是,下面的代码产生了一个MemoryError,我似乎无法深入了解。
import numpy as np
import rpy2.robjects as robjects
robjects.r['load']('myrobject.rda')
rils = np.array(robjects.r['myobjectname'])
该错误是在代码的最底线引发的,因此问题是将对象转换为 numpy 数组,而不是加载对象。数据主要是介于 0 和 1 之间的一到三位浮点数,但其中也有一些字符。
我的机器运行 64 位版本的 Ubuntu 16.04 并运行 python 3.5.2 64 位,因此运行 32 位任何东西在这里都不是问题,因为它已经与我看到的相关帖子一样。我有 16 GB 的 RAM。当我使用htop 查看这段代码执行期间的内存使用情况时,它会逐渐增加到大约 4.5 GB,然后退出并抛出错误。
我尝试加载的对象大小为 113.7MB,但我的理解是 .rda 文件已压缩。
我以前从未见过这样的错误,如果能帮助我找出导致它的原因以及我应该做些什么来解决它,我将不胜感激。
编辑
既然有人问我,这里就是确切的错误。
Traceback (most recent call last):
File "rils_ga.py", line 10, in <module>
rils = np.array(robjects.r['Aprobma'])
MemoryError
Aprobma 对应于我在原帖中使用的myobjectname。
【问题讨论】:
-
@Benjamin 否。据我所知,rpy2 加载的工作方式类似于 load() 在 R 中的工作方式。它只是将加载的对象放入环境中,而无需为它分配变量。运行您建议的命令会打印矩阵。
-
@Benjamin 它返回
<class 'rpy2.robjects.vectors.DataFrame'> -
抛出的确切错误是什么?
-
@Benjamin 我已经编辑了帖子以包含该信息。