以下代码不起作用。似乎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。我认为这是由于警告信息。
避免此问题的最佳方法是什么? 提前谢谢!
答案 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
。