In R, how can I determine whether a function call results in a warning?
That is, after calling the function I would like to know whether that instance of the call yielded a warning.
If you want to use the try
constructs, you can set the options for warn. See also ?options
. Better is to use tryCatch()
:
x <- function(i){ if (i < 10) warning("A warning") i } tt <- tryCatch(x(5),error=function(e) e, warning=function(w) w) tt2 <- tryCatch(x(15),error=function(e) e, warning=function(w) w) tt ## <simpleWarning in x(5): A warning> tt2 ## [1] 15 if(is(tt,"warning")) print("KOOKOO") ## [1] "KOOKOO" if(is(tt2,"warning")) print("KOOKOO")
To get both the result and the warning :
tryCatch(x(5),warning=function(w) return(list(x(5),w))) ## [[1]] ## [1] 5 ## ## [[2]] ## <simpleWarning in x(5): A warning>
Using try
op <- options(warn=2) tt <- try(x()) ifelse(is(tt,"try-error"),"There was a warning or an error","OK") options(op)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With