2012-08-16 178 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)