[R] Finding the first value without warning in a loop

David Winsemius dwinsemius at comcast.net
Sun Dec 7 19:09:57 CET 2008


Thanks for that. I am having some difficulty figuring out how it  
works. The help page tells me (I think) that "y<-log(x)" gets matched  
to expr. Am I correct in thinking that if either an error or warning  
is produced, that tryCatch silently returns <something>  (or  
<nothing>?) to the for loop, and  only otherwise goes on to evaluate  
the rest of the second assignment and break call? So any warning would  
abort processing of the remaining expressions?

Are the assignment "xx<-x" and the break call considered "handlers" as  
described in the help page?

I see the purpose of the last argument. Taking out the warning =  
function(w{}) changes the behavior when none of the elements in the  
vector passed to x were valid.

 > for (x in c(-2, -1)) {
+ 	tryCatch({
+ 		y <- log(x)
+ 		xx <- x
+ 		break
+ 	})
+ }
Warning message:
In log(x) : NaNs produced
 > print(xx)
[1] -2


-- 

David Winsemius

On Dec 7, 2008, at 12:21 PM, Gabor Grothendieck wrote:

> Try this:
>
> for (x in c(-2, 2, 4)) {
> 	tryCatch({
> 		y <- log(x)
> 		xx <- x
> 		break
> 	}, warning = function(w) {})
> }
> print(xx) # 2
>
>
>
> On Sun, Dec 7, 2008 at 2:38 AM, Andreas Wittmann
> <andreas_wittmann at gmx.de> wrote:
>> Dear R useRs,
>>
>> with the following piece of code i try to find the first value  
>> which can be
>> calculated without warnings
>>
>> `test` <- function(a)
>> {
>> repeat
>> {
>>  ## hide warnings
>>  suppressWarnings(log(a))
>>
>>  if (exists("last.warning", envir = .GlobalEnv))
>>  {
>>    a <- a + 0.1
>>    ## clear existing warnings
>>    rm("last.warning", envir = .GlobalEnv)
>>  }
>>
>> if(a > 5 || !exists("last.warning", envir = .GlobalEnv))
>>  break
>> }
>>
>> return(a)
>> }
>>
>> if i run this with test(-3), i would expect a=0 as return value.
>> Is it also possible to hide warnings during my function, i guess i  
>> use
>> suppressWarnings in a wrong way here?
>>
>> Thanks and best regards
>>
>> Andreas
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list