R permite que você defina um manipulador de condição
x <- tryCatch({
warning("oops")
}, warning=function(w) {
## do something about the warning, maybe return 'NA'
message("handling warning: ", conditionMessage(w))
NA
})
o que resulta em
handling warning: oops
> x
[1] NA
A execução continua após tryCatch; você pode decidir encerrar convertendo seu aviso em um erro
x <- tryCatch({
warning("oops")
}, warning=function(w) {
stop("converted from warning: ", conditionMessage(w))
})
ou lidar com a condição normalmente (avaliação contínua após a chamada de aviso)
withCallingHandlers({
warning("oops")
1
}, warning=function(w) {
message("handled warning: ", conditionMessage(w))
invokeRestart("muffleWarning")
})
quais impressões
handled warning: oops
[1] 1
options(warn=1)
para restaurar a configuração padrão.