我有一个很长的R脚本,它会抛出一些警告,我可以忽略这些警告。 我可以用
suppressWarnings(expr)
对于单个语句。但是如何在R中全局抑制警告呢?有其他选择吗?
我有一个很长的R脚本,它会抛出一些警告,我可以忽略这些警告。 我可以用
suppressWarnings(expr)
对于单个语句。但是如何在R中全局抑制警告呢?有其他选择吗?
当前回答
你可以用
options(warn=-1)
但请注意,在全球范围内关闭警告信息可能不是一个好主意。
若要重新打开警告,请使用
options(warn=0)
(或者不管你默认的警告是什么,请看这个答案)
其他回答
您需要选项(warn=-1)。但是,请注意warn=0不是最安全的警告级别,不应将其假定为当前级别,特别是在脚本或函数中。因此,暂时关闭警告最安全的方法是:
oldw <- getOption("warn")
options(warn = -1)
[your "silenced" code]
options(warn = oldw)
我现在已经用c代码中的警告调用替换了printf调用。它将在明天晚上发布的2.17.2版本中生效。然后,您应该能够使用suppressWarnings()或上面提到的任何其他方法来避免警告。
suppressWarnings({ your code })
你可以用
options(warn=-1)
但请注意,在全球范围内关闭警告信息可能不是一个好主意。
若要重新打开警告,请使用
options(warn=0)
(或者不管你默认的警告是什么,请看这个答案)
看一下?选项并使用warn:
options( warn = -1 )
正如在其他答案中讨论的那样,您可能希望设置选项(warn = -1)并恢复到旧的行为。withr包允许您设置一个选项值并自动恢复到旧的行为。
# install.packages("withr")
withr::with_options(.new = list(warn = -1),
{code})
另外,local_*函数在包含它们的函数结束之前都具有相同的效果。
function() {
withr::local_options(.new = list(warn = -1)
{ code }
}