[英]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.