[R] how to use try()

John Fox jfox at mcmaster.ca
Mon Feb 9 23:11:39 CET 2004


Dear Heberto,

beta is a vector? Then something like

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]

might do what you want.

John

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
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html




More information about the R-help mailing list