2014-08-29 63 views
1

此問題與我的previous one相似,但更簡單。 下面是我用用rpy2創建從巨蟒[R dataframes代碼:使用rpy2創建臨時數據框:內存問題

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方法進行處理,而無需逐漸使用我所有的內存?

回答

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。