在rpy2中抑制警告

8
当我在Python中使用rpy2导入R时,如何抑制警告?
似乎在R中,你只需要执行以下操作:
options(warn=-1)

...但我不熟悉R语言,我该如何在Python中实现这个功能?


这些警告是在启动时导入R包引起的,还是在常规会话期间(例如某些R表达式)发出的? - chl
后者是由我调用的一些函数生成的。 - Ricky Robinson
suppressWarnings() 可能是一个选项。 - chl
3个回答

19
警告系统在 rpy2 中使用了Python的 warnings 模块。因此,您可以使用该软件包的 filterwarnings() 函数关闭警告。正如在这里对另一个答案的评论中已经指出的那样,这可能是危险的,因为不仅会影响与R相关的警告。
然而,rpy2带有自己的警告类 RRuntimeWarning。因此,您可以通过以下方式仅关闭此类型的警告:
import warnings
from rpy2.rinterface import RRuntimeWarning
warnings.filterwarnings("ignore", category=RRuntimeWarning)

1
这应该是被接受的答案,因为它是“在R中抑制警告”的解决方案。被接受的解决方案行不通。 - Blairg23


2

你已经基本上自己回答了问题。你可以通过使用RPy从Python中调用options(warn=-1)函数:

rpy.r['options'](warn=-1)

对于RPy2,应该像这样(我还没有尝试过):
rpy2.robjects.r['options'](warn=-1)

只需将它放在Python脚本的开头(模块导入后)即可抑制所有警告。


2
似乎对于rpy2无效。显然,可以通过以下方式强制忽略: import warnings warnings.filterwarnings("ignore"), 但这样做并不优雅,因为它不仅影响rpy2警告。 - schmi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接