2010-04-23 2 views
0

Следующий код не работает. Кажется, что предупреждающее сообщение R вызывает ошибку python.Как подавить сообщения об ошибках в rpy2

# 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: «модуль» объект unsubscriptable. Я предполагаю, что это связано с предупреждением.

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

ответ

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.

+0

Благодарим за то, что указали мне в правильном направлении. Я изменил операторы импорта, и теперь код работает правильно. –

+0

@ Björn: Нет проблем! Рад, что это помогло. – unutbu

Смежные вопросы