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 ステートメントを挿入します。

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

エラー メッセージは、モジュールを参照TypeError: 'module' object is unsubscriptableしていると主張しています。rprint ステートメントを使用してスクリプトを実行すると、次のように表示されます。

<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

次に、2 番目の import ステートメントが最初のステートメントをオーバーライドし、その後、名前はではなくrモジュールを参照しています。rpy2rpy2.robjects.r

于 2010-04-23T17:30:04.790 に答える