簡體   English   中英

抑制 rpy2 中的警告

[英]suppress warnings in rpy2

當我在 python 中導入 R 時,使用 rpy2,如何抑制警告?

看來,在 R 中,您只需執行以下操作

options(warn=-1)

...但我不熟悉 R。我如何在 python 中做到這一點?

rpy2 中的警告系統使用 Python 的warnings模塊。 因此,您可以使用該包的filterwarnings()函數關閉警告。 正如在這里對另一個答案的評論中已經指出的那樣,這可能很危險,因為不僅與 R 相關的警告受到影響。

但是, rpy2 帶有自己的警告類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)

有關高級過濾的可用字段,請參閱LogRecord類規范。

你幾乎自己給出了答案。 您可以使用 RPy 從 Python 調用options(warn=-1)函數:

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

對於 RPy2,它應該是這樣的(還沒有嘗試過):

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

只需將它放在 Python 腳本的開頭(在模塊導入之后),所有警告都應該被抑制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM