我有一个很长的 R 脚本,它会引发一些警告,我可以忽略。我可以使用
suppressWarnings(expr)
对于单个语句。但是如何在全局范围内抑制 R 中的警告?有这个选项吗?
你想要options(warn=-1)
。但是,请注意,这warn=0
不是最安全的警告级别,不应将其视为当前级别,尤其是在脚本或函数中。因此,暂时关闭警告的最安全方法是:
oldw <- getOption("warn")
options(warn = -1)
[your "silenced" code]
options(warn = oldw)
我现在已经用C 代码中的调用替换了printf
调用。warning
它将在明天晚上应该可用的版本 2.17.2 中生效。然后,您应该能够使用suppressWarnings()
上述任何方法或任何其他方法来避免警告。
suppressWarnings({ your code })
看看?options
并使用warn
:
options( warn = -1 )
正如在其他答案中所讨论的,您可能想要设置 options(warn = -1) 并恢复到旧行为。这些withr
包允许您设置选项值并自动恢复到旧行为。
# install.packages("withr")
withr::with_options(.new = list(warn = -1),
{code})
或者,在local_*
包含它们的函数结束之前,这些函数具有相同的效果。
function() {
withr::local_options(.new = list(warn = -1)
{ code }
}