如何在R脚本中全局抑制警告


174

我的R脚本很长,会引发一些警告,我可以忽略这些警告。我可以用

suppressWarnings(expr)

对于单个语句。但是如何在全局范围内抑制R中的警告?有这个选项吗?

Answers:


226

你可以用

options(warn=-1)

但是请注意,全局关闭警告消息可能不是一个好主意。

要重新打开警告,请使用

options(warn=0)

(或您的默认设置是什么warn,请参见此答案


5
此方法可行,但是Francesco Napolitano自2015年9月22日起采用的方法是更安全且更全球适用的方法。
安迪·克利夫顿

我同意@Andy,他的回答应标记为已接受。
JASC

104

你要options(warn=-1)。但是,请注意,这warn=0不是最安全的警告级别,尤其在脚本或函数中,不应将其视为当前警告级别。因此,暂时关闭警告的最安全方法是:

oldw <- getOption("warn")
options(warn = -1)

[your "silenced" code]

options(warn = oldw)

41

我现在用C代码中的printf调用替换了这些调用warning。它将在2.17.2版中生效,该版本应于明天晚上发布。然后,您应该能够避免使用suppressWarnings()上述任何其他方法发出警告。

suppressWarnings({ your code })

6
这是正确的方法。应该标记为答案。
丹尼斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.