[R] using lm() with variable formula

Chris Elsaesser chris.elsaesser at spadac.com
Thu May 17 17:01:41 CEST 2007

New to R; please excuse me if this is a dumb question.  I tried to RTFM;
didn't help.

I want to do a series of regressions over the columns in a data.frame,
systematically varying the response variable and the the terms; and not
necessarily including all the non-response columns.  In my case, the
columns are time series. I don't know if that makes a difference; it
does mean I have to call lag() to offset non-response terms. I can not
assume a specific number of columns in the data.frame; might be 3, might
be 20. 

My central problem is that the formula given to lm() is different each
time.  For example, say a data.frame had columns with the following
headings:  height, weight, BP (blood pressure), and Cals (calorie intake
per time frame).  In that case, I'd need something like the following:

	lm(height ~ weight + BP + Cals)
	lm(height ~ weight + BP)
	lm(height ~ weight + Cals)
	lm(height ~ BP + Cals)
	lm(weight ~ height + BP)
	lm(weight ~ height + Cals)

In general, I'll have to read the header to get the argument labels.

Do I have to write several functions, each taking a different number of
arguments?  I'd like to construct a string or list representing the
varialbes in the formula and apply lm(), so to say  [I'm mainly a Lisp
programmer where that part would be very simple. Anyone have a Lisp API
for R? :-}]


Chris Elsaesser, PhD        
Principal Scientist, Machine Learning
7921 Jones Branch Dr. Suite 600  
McLean, VA 22102  

703.371.7301 (m)
703.637.9421 (o)

More information about the R-help mailing list