2012-08-16 135 views
2

当我使用rpy2在python中导入R时,如何抑制警告?在rpy2中抑制警告

看来,R您要做的只是以下

options(warn=-1) 

...但我不熟悉的R.如何在Python这样做呢?

+0

关闭仅此类型的警告是否这些警告从开始引进的R程序包跟随,或者他们常会期间发行的(例如,对于一些[R表达式)? – chl 2012-08-17 09:45:17

+0

后者,它们是由我打电话的一些函数生成的。 – 2012-08-17 12:34:41

+0

'suppressWarnings()'可能是一个选项。 – chl 2012-08-17 15:22:41

回答

2

你几乎自己给出了答案。您可以通过使用RPY调用从Python中options(warn=-1)功能:

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

对于RPy2它应该是这样的(没有试过):

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

只要把它在一开始你Python脚本(在模块导入之后)和所有警告应该被抑制。

+1

似乎不适用于rpy2。很明显,你可以通过以下方式残忍地提供: 'import warnings warnings.filterwarnings(“ignore”)',它根本不算优雅,因为它不仅影响rpy2警告 – schmi 2016-10-27 14:59:24

5

rpy2中的警告系统使用Python的warnings模块。因此,您可以使用该包的filterwarnings()函数关闭警告。正如在另一个答案的评论中已经指出的那样,这可能是危险的,因为不仅R相关的警告受到影响。

但是,rpy2自带警告类,RRuntimeWarning。因此,您可以通过

import warnings 
from rpy2.rinterface import RRuntimeWarning 
warnings.filterwarnings("ignore", category=RRuntimeWarning)