如何抑制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中运行这个代码示例是可以的,但在脚本中运行时却出现了错误,错误信息是TypeError: 'module' object is unsubscriptable。我想这可能是因为警告信息导致的。
有什么好的方法可以避免这个问题吗?谢谢!
1 个回答
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
。