Как подавить сообщения об ошибках в rpy2 - PullRequest
0 голосов
/ 23 апреля 2010

Следующий код не работает. Похоже, что предупреждение 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' неприемлем Я предполагаю, что это связано с предупреждением.

Как лучше всего избежать этой проблемы? Заранее спасибо!

1 Ответ

1 голос
/ 23 апреля 2010

Поместите оператор печати прямо перед ошибкой:

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

тогда второй оператор импорта переопределяет первый, а затем имя r ссылается на модуль rpy2 вместо rpy2.robjects.r.

...