[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