Re: [R] warning inside loop
Dear William, thank you kindly for this solution: it provides exactly what I need, especially due to the fact that the encapsulating function returns a list, from which I can extract all the information I need. kind regards, Rense Nieuwenhuis William Dunlap wrote: -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. -- View this message in context: http://n4.nabble.com/warning-inside-loop-tp1011667p1011979.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.
Re: [R] warning inside loop
-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.
Re: [R] warning inside loop
What type of error do you get if it has a false converge? Does it raise an error (if so, ?try). Is there some value you can test for? You need to provide more details as to what happens. On Mon, Jan 11, 2010 at 6:06 PM, Rense rense.nieuwenh...@gmail.com wrote: 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. 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.htmlhttp://www.r-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? [[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.