The "try" solutions suggested won't work in S-Plus. If you want transportable code, the following worked for me just now in both S-Plus 6.2 and R 1.8.1:

error <- function()stop()

result <- try(error())
if(regexpr("error", casefold(class(result)))>0)
   "try trapped an error"

     Best Wishes,
     spencer graves

r.ghezzo wrote:

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" <[EMAIL PROTECTED]> 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




______________________________________________
[EMAIL PROTECTED] 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



______________________________________________ [EMAIL PROTECTED] 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

Reply via email to