使用rpy2:memory问题创建临时数据帧

时间:2014-08-29 14:03:51

标签: python r numpy rpy2

这个问题与我的previous one相似但更简单。 这是我用来使用rpy2:

从python创建R数据帧的代码
import numpy as np
from rpy2 import robjects

Z = np.zeros((10000, 500))
df = robjects.r["data.frame"]([robjects.FloatVector(column) for column in Z.T])

我的问题是重复使用它会导致巨大的内存消耗。 我试图从here改编这个想法,但没有成功。 如何在不逐渐使用所有内存的情况下将许多numpy数组转换为数据帧以供R方法处理?

1 个答案:

答案 0 :(得分:0)

您应该确保使用最新版本的rpy2。使用rpy2版本2.4.2,以下工作很好:

import gc

import numpy as np
from rpy2 import robjects
from rpy2.robjects.numpy2ri import numpy2ri


for i in range(100):
    print i
    Z = np.random.random(size=(10000, 500))
    matrix = numpy2ri(Z)
    df = robjects.r("data.frame")(matrix)

    gc.collect()

我的电脑上的内存使用率从未超过600 MB。