[R] how to use try()

r.ghezzo heberto.ghezzo at mcgill.ca
Tue Feb 10 15:03:59 CET 2004


Thanks to everybody who answered my question. Here are the suggestion 
for completion sake of the archives.
from John Fox @ Mcmaster.ca
lo <-
try(nls(y~y0+a/(1+(x/x0)^b),start=list(y0=0.1,a=a0,x0=x00,b=-8.1)))
beta[i] <- if (class(lo) == "try-error") NA else lo$m$getPars()[4]

from Peter Dalgaard @ biostat.ku.dk
Just check the return value from try:
beta[i] <- if(inherits(try(.....),"try-error")) NA else lo$etc...

from Thomas Lumley @ u.washington.edu
You want either both assignments inside the try()
try({
	lo<-nls(....)
	beta[i]<-lo$m$getPars(4)
})

or both outside

lo<- try(nls(....))
if (inherits(lo,"try-error")) beta[i]<-NA else beta[i]<-lo$m$getPars()[4]

from Sundar Dorai-Raj @ pdf.com
if (inherits(lo,"try-error")) beta[i]<-NA else beta[i]<-lo$m$getPars()[4]

also from Andrej Kveder @ zrc-sazu.si; Patric Burns @ pburns.seanet.com
Hadley Wickham @ auckland.ac.nz;

from Douglas Bates @ stat.wisc.edu
Check the function nlsList in package nlme.  It does something very
like what you want to do.
It is not a good idea to use lo$m$getPars() directly.  It is better to
use the generic function, which in this case is coef(), as in
coef(lo)[4]


On Mon, 09 Feb 2004 14:30:07 -0500
  "r.ghezzo" <heberto.ghezzo at mcgill.ca> wrote:

>> Hello, I have a program with this section:
>> ..
>> for(i in 1:20){
>>   lo <-
>> nls(y~y0+a/(1+(x/x0)^b),start=list(y0=0.1,a=a0,x0=x00,b=-8.1))
>>   beta[i] <- lo$m$getPars()[4]
>> }
>> ..
>> If the fit works this is OK but if the fit fails, the whole program
>> fails so:
>> ..
>> for(i in 1:20){
>>   try(lo <- 
>> nls(y~y0+a/(1+(x/x0)^b),start=list(y0=0.1,a=a0,x0=x00,b=-8.1)))
>>   beta[i] <- lo$m$getPars()[4]
>> }
>> ..
>> but the try catches the error in nls and beta[i] gets assigned
>> beta[i-1] from the previous loop. This is bad but no so bad as it can
>> be checked,
>> Now in some cases the error is in i=1 and the program stops!!
>> is there a way to set lo$m$getPars() to zero before the call?
>> I tried to understand the use of tryCatch() but frankly it is above
>> me. Sorry
>> Thanks for any help
>> Heberto Ghezzo
>> Meakins-Christie Labs
>> 
>>




More information about the R-help mailing list