Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I check whether a function call results in a warning?

Tags:

r

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.

like image 321
Alex Holcombe Avatar asked Oct 11 '10 02:10

Alex Holcombe


1 Answers

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) 
like image 124
Joris Meys Avatar answered Sep 20 '22 17:09

Joris Meys