[R] Nesting functions in loops that result in error messages breaking the loop
David Winsemius
dwinsemius at comcast.net
Tue Jul 20 15:55:57 CEST 2010
On Jul 20, 2010, at 9:44 AM, Patrick McKann wrote:
> Hello all,
>
> I am trying to write a program in R in which I call a function
> multiple
> times within a loop. The problem is that sometimes the function
> breaks down
> while calling another function, and produces an error message that
> breaks my
> loop and the program stops. I would like to keep the loop running
> when this
> function breaks down, and just move on to the next iteration in the
> loop.
> Is there any way to buffer the output of a function within the loop,
> so that
> I can note that the function produced an error message, without the
> error
> message breaking the loop and stopping my program? Let me know if
> this
> question does not make sense.
?try
This is a worked example that Josh Barnett posted a couple of days ago
after some (lengthy) coaching:
x <- read.table(textConnection("y1 y2 y3 x1 x2
indv.1 bagels donuts bagels 4 6
indv.2 donuts donuts donuts 5 1
indv.3 donuts donuts donuts 1 10
indv.4 donuts donuts donuts 10 9
indv.5 bagels donuts bagels 0 2
indv.6 bagels donuts bagels 2 9
indv.7 bagels donuts bagels 8 5
indv.8 bagels donuts bagels 4 1
indv.9 donuts donuts donuts 3 3
indv.10 bagels donuts bagels 5 9
indv.11 bagels donuts bagels 9 10
indv.12 bagels donuts bagels 3 1
indv.13 donuts donuts donuts 7 10
indv.14 bagels donuts bagels 2 10
indv.15 bagels donuts bagels 9 6"), header = TRUE)
closeAllConnections()
results <- matrix(nrow = 1, ncol = 3)
colnames(results) <- c("y1", "y2", "y3")
require(rms) # or Design
for (i in 1:3) {
mod.poly3 <- try(lrm(x[,i] ~ pol(x1, 3) + pol(x2, 3), data=x),
silent=TRUE)
if(class(mod.poly3)[1] != 'try-error')
{results[1,i] <- anova(mod.poly3)[1,3]}
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list