[R] constructing a formula
John Fox
jfox at mcmaster.ca
Tue Aug 6 02:55:56 CEST 2002
Dear Mitchell,
At 05:52 PM 8/5/2002 -0400, Michaell Taylor wrote:
>Dear Listers,
>
>I am having trouble figuring out how to build a formula using a variable
>list. For example, I have:
>
>a _ data.frame(a=rnorm(1000))
>a$b_rnorm(1000)+.5*a$a
>a$c_rnorm(1000)+.5*a$b
>a$d_rnorm(1000)+.5*a$b+.1*a$a
>attach(a)
>
>and I estimate,
>
>lm(d ~ b+c+d)
Did you really mean to regress d on predictors including d? (Note that the
data frame a shadows a$a.)
>BUT,
>
>I wish to construct a generalized solution in which,
>
>ListOfVar _ c('b','c','d')
>
>The question is how to leverage ListOfVar into the constuction of the
>formula lm(a$d ~ a$b+a$c+a$b). I know this must be fairly simple, but
>unfortunately my readings of the various help files/books haven't been
>productive yet.
Note that a$b appears twice on the RHS of the formula -- probably not what
you meant.
>Any help would be appreciated. Thanks in advance.
If all of the variables on the RHS are numeric, as here, then something like
lm(a$a ~ as.matrix(a[,ListOfVar]))
should work, where a is the data frame containing the variables in the list
(actually a character vector).
If there are also factors on the RHS of the formula, then you could do
something like
lm(eval(parse(text=paste('a ~', paste(ListOfVar, collapse="+")))),
data=a)
though someone will probably think of something simpler.
Does that do what you need?
John
-----------------------------------------------------
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario, Canada L8S 4M4
email: jfox at mcmaster.ca
phone: 905-525-9140x23604
web: www.socsci.mcmaster.ca/jfox
-----------------------------------------------------
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list