【发布时间】:2013-04-18 03:14:49
【问题描述】:
我有一个很长的 R 脚本,它会引发一些警告,我可以忽略。 我可以使用
suppressWarnings(expr)
对于单个语句。但是如何在全局范围内抑制 R 中的警告?有这个选项吗?
【问题讨论】:
我有一个很长的 R 脚本,它会引发一些警告,我可以忽略。 我可以使用
suppressWarnings(expr)
对于单个语句。但是如何在全局范围内抑制 R 中的警告?有这个选项吗?
【问题讨论】:
正如在其他答案中所讨论的,您可能想要设置 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 }
}
【讨论】:
我现在已将 C 代码中的 printf 调用替换为对 warning 的调用。它将在明天晚上应该可用的版本 2.17.2 中生效。那么您应该能够使用suppressWarnings() 或上述任何其他方法来避免警告。
suppressWarnings({ your code })
【讨论】:
你可以使用
options(warn=-1)
但请注意,全局关闭警告消息可能不是一个好主意。
要重新打开警告,请使用
options(warn=0)
(或您对warn 的默认设置,请参阅this answer)
【讨论】:
你想要options(warn=-1)。但是,请注意warn=0 不是最安全的警告级别,不应将其假定为当前级别,尤其是在脚本或函数中。因此,暂时关闭警告的最安全方法是:
oldw <- getOption("warn")
options(warn = -1)
[your "silenced" code]
options(warn = oldw)
【讨论】:
on.exit(options(warn = oldw)),以确保无论错误如何都重置选项。
查看?options 并使用warn:
options( warn = -1 )
【讨论】: