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 <wdun...@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-boun...@r-project.org [mailto:r-help-boun...@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 <j...@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]] ______________________________________________ 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.