当我在Python中使用rpy2导入R时,如何抑制警告?
似乎在R中,你只需要执行以下操作:
似乎在R中,你只需要执行以下操作:
options(warn=-1)
...但我不熟悉R语言,我该如何在Python中实现这个功能?
warnings
模块。因此,您可以使用该软件包的 filterwarnings()
函数关闭警告。正如在这里对另一个答案的评论中已经指出的那样,这可能是危险的,因为不仅会影响与R相关的警告。RRuntimeWarning
。因此,您可以通过以下方式仅关闭此类型的警告:import warnings
from rpy2.rinterface import RRuntimeWarning
warnings.filterwarnings("ignore", category=RRuntimeWarning)
从3.0版本开始,rpy2不再使用Python的warnings
模块。相反,它现在依赖于logging
。新方案如下:
from rpy2.rinterface_lib.callbacks import logger as rpy2_logger
import logging
rpy2_logger.setLevel(logging.ERROR) # will display errors, but not warnings
如果你只想筛选特定的警告信息,请使用以下命令:
rpy2_logger.addFilter(lambda record: 'notch went outside hinges' not in record.msg)
你已经基本上自己回答了问题。你可以通过使用RPy从Python中调用options(warn=-1)
函数:
rpy.r['options'](warn=-1)
rpy2.robjects.r['options'](warn=-1)
只需将它放在Python脚本的开头(模块导入后)即可抑制所有警告。
import warnings warnings.filterwarnings("ignore")
,
但这样做并不优雅,因为它不仅影响rpy2警告。 - schmi
suppressWarnings()
可能是一个选项。 - chl