如何在rpy2中抑制错误消息

时间:2010-04-23 16:00:41

标签: python numpy rpy2

以下代码不起作用。似乎R警告消息引发了python错误。

# 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:'module'对象是unsubscriptable。我认为这是由于警告信息。

避免此问题的最佳方法是什么? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

在错误之前放置一个打印声明:

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

错误消息TypeError: 'module' object is unsubscriptable声称r正在引用模块。使用print语句运行脚本时,您会看到类似

的内容
<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

然后第二个import语句覆盖第一个,然后名称r引用模块rpy2而不是rpy2.robjects.r