How to suppress error messages in rpy2
The following code does not work. It seems that the R warning message raises a python error.
# 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)
Running that code example in ipython works, however, running it inside a script raises the errorTypeError: 'module' object is unsubscriptable. I assume this is due to the warning message.
What is the best way to avoid t开发者_高级运维his problem? Thanks in advance!
Put a print statement right before the error:
print(r)
result = r['chisq.test'](a)
The error message TypeError: 'module' object is unsubscriptable
is claiming that r
is referencing a module. When you run the script with the print statement, you'll see something like
<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
Note that the first line says that r
is referencing the module rpy2
.
This should give you a clue as to what is going wrong. Once you find the name of the trouble-making module, check your import statements to see how r
is getting reassigned to that module.
For example, if you have
from rpy2.robjects import r
...
import rpy2 as r
then the second import statement is overriding the first, and the name r
is thereafter referencing the module rpy2
instead of rpy2.robjects.r
.
精彩评论