how to use try()
You could also put both statements inside the try block:
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]
})
}
Now beta[i] will only be assigned if nls runs without error.
Hadley
r.ghezzo 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