2010-04-23 79 views
0

以下代碼不起作用。看來R警告消息引發了python錯誤。如何抑制rpy2中的錯誤消息

# enable use of python objects in rpy2 
import rpy2.robjects.numpy2ri 
import numpy as np 
from rpy2.robjects import r 

# create an example array 
a = np.array([[5,2,5],[3,7,8]]) 

# this line leads to a warning message, which in turn raises an 
# error message if run within a script. 
result = r['chisq.test'](a) 

運行上面的示例代碼中IPython的作品,但是,它運行一個腳本,裏面提出了一個errorTypeError:「模塊」對象是unsubscriptable。我認爲這是由於警告信息。

避免此問題的最佳方法是什麼? 在此先感謝!

回答

1

把打印語句錯誤前右:

print(r) 
result = r['chisq.test'](a) 

錯誤消息TypeError: 'module' object is unsubscriptable聲稱,r被引用的模塊。當您運行與打印語句的腳本,你將看到類似

<module 'rpy2' from '/usr/lib/python2.6/dist-packages/rpy2/__init__.pyc'> 
Traceback (most recent call last): 
    File "/home/unutbu/pybin/test.py", line 14, in <module> 
    result = r['chisq.test'](a) 
TypeError: 'module' object is unsubscriptable 

注意,第一行說,r被引用模塊rpy2。 這應該給你一個線索,看看哪裏出了問題。一旦找到故障排除模塊的名稱,請檢查您的導入語句,以瞭解r如何重新分配給該模塊。

舉例來說,如果你有

from rpy2.robjects import r 
... 
import rpy2 as r 

那麼第二個導入語句覆蓋第一,並且名稱r此後引用模塊rpy2而不是rpy2.robjects.r

+0

謝謝你指點我正確的方向。 我改變了導入語句,現在代碼正確運行。 – 2010-04-25 11:26:53

+0

@Björn:沒問題!很高興幫助。 – unutbu 2010-04-25 12:35:42