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

Ric*_*ard 161 warnings r

我有一个很长的R脚本会抛出一些警告,我可以忽略它.我可以用

suppressWarnings(expr)
Run Code Online (Sandbox Code Playgroud)

单一陈述.但是如何在全球范围内抑制R中的警告?这有选择吗?

sie*_*ste 217

你可以用

options(warn=-1)
Run Code Online (Sandbox Code Playgroud)

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

要重新打开警告,请使用

options(warn=0)
Run Code Online (Sandbox Code Playgroud)

(或任何默认值warn,请参阅此答案)

  • 这是有效的,但Francesco Napolitano从2015年9月22日起采用的方法是更安全,更全球适用的方法. (3认同)

Fra*_*ano 94

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

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

[your "silenced" code]

options(warn = oldw)
Run Code Online (Sandbox Code Playgroud)

  • 比接受的答案更好恕我直言。如果在函数中使用,请将最后一行替换为“on.exit(options(warn = oldw))”,以确保无论出现错误如何都会重置选项。 (2认同)

小智 27

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

suppressWarnings({ your code })
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的方法。应该标记为答案。 (3认同)

Sim*_*lon 8

看看?options并使用warn:

options( warn = -1 )
Run Code Online (Sandbox Code Playgroud)