# R: Loops: fitting models in a loop

### From MathWiki

See R: Programming the R language

From Bill Venables, Aug. 1, 2006: Murray, Here is a general paradigm I tend to use for such problems. It extends to fairly general model sequences, including different responses, &c First a couple of tiny, tricky but useful functions: subst <- function(Command, ...) do.call("substitute", list(Command, list(...))) abut <- function(...) ## jam things tightly together do.call("paste", c(lapply(list(...), as.character), sep = "")) Name <- function(...) as.name(do.call("abut", list(...))) Now the gist. fitCommand <- quote({ MODELi <- lm(y ~ poly(x, degree = i), theData) print(summary(MODELi)) }) for(i in 1:6) { thisCommand <- subst(fitCommand, MODELi = Name("model_", i), i = i) print(thisCommand) ## only as a check eval(thisCommand) } At this point you should have the results and objects(pat = "^model_") should list the fitted model objects, all of which can be updated, summarised, plotted, &c, because the information on their construction is all embedded in the call. Bill. -----Original Message----- From: r-help-bounces@stat.math.ethz.ch [mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Murray Jorgensen Sent: Tuesday, 1 August 2006 2:09 PM To: r-help@stat.math.ethz.ch Subject: [R] Fitting models in a loop If I want to display a few polynomial regression fits I can do something like for (i in 1:6) { mod <- lm(y ~ poly(x,i)) print(summary(mod)) } Suppose that I don't want to over-write the fitted model objects, though. How do I create a list of blank fitted model objects for later use in a loop? Murray Jorgensen