我有一个很长的R脚本会抛出一些警告,我可以忽略它。 我可以用
suppressWarnings(expr)
单个陈述。但是如何在全球范围内抑制R中的警告?这有选择吗?
答案 0 :(得分:197)
您可以使用
options(warn=-1)
但请注意,全局关闭警告信息可能不是一个好主意。
要重新开启警告,请使用
options(warn=0)
(或warn
的默认值,请参阅this answer)
答案 1 :(得分:86)
你想要options(warn=-1)
。但请注意,warn=0
不是最安全的警告级别,不应将其视为当前警告级别,特别是在脚本或函数中。因此,临时关闭警告的最安全方法是:
oldw <- getOption("warn")
options(warn = -1)
[your "silenced" code]
options(warn = oldw)
答案 2 :(得分:12)
我已经用C代码中的printf
调用替换了warning
调用。它将在2.17.2版本中生效,该版本应该在明天晚上提供。然后,您应该可以使用suppressWarnings()
或任何其他上述方法来避免警告。
suppressWarnings({ your code })
答案 3 :(得分:8)
查看?options
并使用warn
:
options( warn = -1 )
答案 4 :(得分:2)
如其他答案中所述,您可能希望设置 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 }
}