[R] warning inside loop
William Dunlap
wdunlap at tibco.com
Tue Jan 12 00:40:24 CET 2010
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Rense
> Sent: Monday, January 11, 2010 3:07 PM
> To: r-help at 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 at 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.
>
More information about the R-help
mailing list