目前我写道:
warn = getOption("warn")
options(warn=-1)
foo()
options(warn=warn)
有更好的解决方案吗?
答案 0 :(得分:4)
使用suppressWarnings()
:
suppressWarnings(foo())
答案 1 :(得分:2)
您将表达式包装在suppressWarnings()
中(但此处foo()
会返回错误,而不是警告)。
答案 2 :(得分:0)
如果您想跳过多个警告,可以将代码包装到withCallingHandlers()
函数中。
例如:
withCallingHandlers({
print("prt1")
warning("warn1")
message("msg1")
print("prt2")
warning("warn2")
message("msg2")
},
warning = function() { return(NULL) })
通过在message = function() { return(NULL) })
函数中添加withCallingHandlers()
作为额外参数,也可以省略messages()。
此外,有一个参数传递你的错误函数处理程序,但是,当出现错误时,它会进入错误处理函数,并且不会在括号中执行剩余的代码。