[R] Fitting models in a loop

Bill.Venables at csiro.au Bill.Venables at csiro.au
Tue Aug 1 07:16:05 CEST 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 at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Murray Jorgensen
Sent: Tuesday, 1 August 2006 2:09 PM
To: r-help at 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
-- 
Dr Murray Jorgensen      http://www.stats.waikato.ac.nz/Staff/maj.html
Department of Statistics, University of Waikato, Hamilton, New Zealand
Email: maj at waikato.ac.nz                                Fax 7 838 4155
Phone  +64 7 838 4773 wk    Home +64 7 825 0441    Mobile 021 1395 862

______________________________________________
R-help at stat.math.ethz.ch 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