目前我写的是:
warn = getOption("warn")
options(warn=-1)
foo()
options(warn=warn)
有更好的解决方案吗?
目前我写的是:
warn = getOption("warn")
options(warn=-1)
foo()
options(warn=warn)
有更好的解决方案吗?
使用suppressWarnings()
:
suppressWarnings(foo())
你可以使用suppressWarnings()
来包装一个表达式(但是在这里,foo()
返回的是错误而不是警告)。
如果你想跳过多个警告,你可以将你的代码包裹在withCallingHandlers()
函数中。
例如:
withCallingHandlers({
print("prt1")
warning("warn1")
message("msg1")
print("prt2")
warning("warn2")
message("msg2")
},
warning = function() { return(NULL) })
还有一种可能性是通过在withCallingHandlers()
函数中添加额外的参数message = function() { return(NULL) })
来省略消息()。
此外,还有一个参数可以传递您的错误函数处理程序,但是当出现错误时,它会进入错误处理程序函数,并且不会执行括号中剩余的代码。
options
函数返回先前设置的值,因此您可以节省一行代码:warn<-options(warn=-1);foo();options(warn)
。 - nicola