0

以下代码不起作用。似乎 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' object is unsubscriptable。我认为这是由于警告消息。

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

4

1 回答 1

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.

于 2010-04-23T17:30:04.790 回答