Hi Bill,
Many thanks for such a nice illustration. I tried the first option and it's
working. More specifically,

model.d <- tryCatch(nlme(blah blah blah), error=function(e)NULL)

   if(!is.null(model.d)) {
       furtherProcessTheModel(model.d)
                              }

But instead of  !is.null, I want something so that when 'model.d' under
tryCatch is OK, I can do further computations based on its results.


Once again thanks.

Regards,
Jamil



On 7 April 2014 16:35, William Dunlap <wdunlap@tibco.com> wrote:

> > Thanks for the suggestion. What I understand is trying something like
> >
> > tryCatch(nlme(conc~f2(dose,Theta1,Theta
> > 2,Theta3,t),
> >  fixed=Theta1+Theta2+Theta3~1,
> >  data=grouped.data,
> >  random=Theta1+Theta2+Theta3~1,
> >  start=list(fixed=ini.pkpara))
> >             )
> >
> > Is that correct?
>
> No.
>
> Executing tryCatch(someExpression) is equivalent to executing just
> someExpression because you haven't set up any condition handlers.
>
> If you did something like
>    model.d <- tryCatch(nlme(blah blah blah), error=function(e)NULL)
> then model.d would contain the return value of the call to nlme if
> all went well and NULL otherwise.  You could then use
>    if(!is.null(model.d)) {
>        furtherProcessTheModel(model.d)
>    }
> to do things that only make sense when the model could  be fitted.
>
> Now NULL may be a legitimate return value from a function and
> it also doesn't give you any hint about what went wrong, so you could
> have the error handler return an object of a class that no normal
> function would return and have it contain the error message.  E.g.,
>    model.d <- tryCatch(nlme(notAFormula),
>
>  error=function(e)structure(conditionMessage(e),class="ERROR"))
> and then you can test for errors with
>    if (inherits(model.d, "ERROR")) {
>        message("Iteration ", i, "failed with error: ", model.d)
>    } else {
>        furtherProcessTheModel(model.d)
>    }
> You could also look at the error message that model.d contains in that
> case.
>
> The try() function is essentially that call to tryCatch: it gives its
> error output
> the class 'try-error'.
>
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
>
> > -----Original Message-----
> > From: r-help-bounces@r-project.org [mailto:r-help-bounces@r-project.org]
> On Behalf
> > Of Naser Jamil
> > Sent: Monday, April 07, 2014 1:46 AM
> > To: Jim Lemon
> > Cc: R help
> > Subject: Re: [R] skipping an error message
> >
> > Hi Jim,
> > Thanks for the suggestion. What I understand is trying something like
> >
> > tryCatch(nlme(conc~f2(dose,Theta1,Theta
> > 2,Theta3,t),
> >  fixed=Theta1+Theta2+Theta3~1,
> >  data=grouped.data,
> >  random=Theta1+Theta2+Theta3~1,
> >  start=list(fixed=ini.pkpara))
> >             )
> >
> > Is that correct?
> >
> > Once again thanks.
> >
> > Regards,
> > Jamil.
> >
> >
> > On 6 April 2014 23:51, Jim Lemon <jim@bitwrit.com.au> wrote:
> >
> > > On 04/06/2014 08:21 PM, Naser Jamil wrote:
> > >
> > >> Dear R-user,
> > >> May I seek your suggestion on an issue. I'm fitting non-linear mixed
> > >> effects
> > >> model as a part of my large R program. But sometimes I get error
> messages
> > >> from it and the code stops working. In such cases, I want to skip the
> > >> iterations and
> > >> want to move to the next iteration ignoring all the subsequent
> > >> computations.
> > >>
> > >> The following is only that part of the code which fits the mixed
> effects
> > >> model. I tried with "tryCatch" as shown below, but it's not serving my
> > >> purpose. I guess something is wrong in my approach.
> > >>
> > >> ###########################################################
> > >>
> > >> grouped.data<-groupedData(formula = conc ~ t | subject,
> > >> data = data.d)
> > >> model.d<-nlme(conc~f2(dose,Theta1,Theta2,Theta3,t),
> > >> fixed=Theta1+Theta2+Theta3~1,
> > >> data=grouped.data,
> > >> random=Theta1+Theta2+Theta3~1,
> > >> start=list(fixed=ini.pkpara))
> > >> summ<-summary(model.d) # summary of the model
> > >>
> > >> tryCatch(summ, error = function() next)
> > >>
> > >> ###########################################################
> > >>
> > >>  Hi Jamil,
> > > I think you have to pass the expression:
> > >
> > > nlme(conc~f2(dose,Theta1,Theta2,Theta3,t),
> > >  fixed=Theta1+Theta2+Theta3~1,
> > >  data=grouped.data,
> > >  random=Theta1+Theta2+Theta3~1,
> > >  start=list(fixed=ini.pkpara))
> > >
> > > not the result of the expression.
> > >
> > > Jim
> > >
> >
> >       [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]


