> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Rense > Sent: Monday, January 11, 2010 3:07 PM > To: r-help@r-project.org > Subject: [R] warning inside loop > > > Hi, > > I'm running some data simulations using (mixed effects)* > regression models > that show difficulty to converge. Therefore, I seek a way of capturing > warnings (of false convergence) inside a loop. > > Inside that loop, I modify data and estimate a model. I do so > many times > with slightly different modifications of the data. Next, I > extract some of > the model parameters and store these in a matrix. However, as > some of the > models do not converge well, some of the stored parameters > are extracted > from the ill-converged models. Therefore, I seek a way of > automatically > detecting whether the estimation procedure has resulted in a > warning, so I > can distinguish between the well- and ill-converged models. > > I have been trying to use functions as warnings(), as well as > using the > object last.warning, but unfortunately to no avail.
Try withCallingHandlers(), as in the following function with returns the value of the expression along with any warning messages as a list: > withWarnings function (expr) { warnings <- character() retval <- withCallingHandlers(expr, warning = function(ex) { warnings <<- c(warnings, conditionMessage(ex)) invokeRestart("muffleWarning") }) list(Value = retval, Warnings = warnings) } <environment: R_GlobalEnv> Typical usage would be: > lapply(-1:1, function(i)withWarnings(log(i))) [[1]] [[1]]$Value [1] NaN [[1]]$Warnings [1] "NaNs produced" [[2]] [[2]]$Value [1] -Inf [[2]]$Warnings character(0) [[3]] [[3]]$Value [1] 0 [[3]]$Warnings character(0) Perhaps there is some encapsulation of this already in some package, as try() encapsulates error catching. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > > Although I cannot provide a reproducible example, I > schematically represent > the procedure I seek to use below: > > > for (i in 1:10) > { > <<modify data>> > <<estimate model>> > > <<<evaluate whether estimation produced warning>>> > > <<extract model parameters, and store whether warning occured>> > } > > I hope any one can give some guidelines on how to deal with > warnings inside > a loop. > > With Kind regards, > > Rense > > > > > > *Although I use the lme4 package for that actual analysis, I sent my > question to this mailinglist (instead of the R mixed list) > because I believe > this is a general issue, rather than one associated > exclusively with mixed > models. > -- > View this message in context: > http://n4.nabble.com/warning-inside-loop-tp1011667p1011667.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. > ______________________________________________ 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.