# [R] question about formula for lm

Douglas Bates bates at stat.wisc.edu
Sat Jun 16 17:09:59 CEST 2007

```On 6/14/07, Greg Snow <Greg.Snow at intermountainmail.org> wrote:
>
> Try:
>
> > lm( formula( paste( Ytext, '~ Xvar' ) ), data=X)

That type of construction is perilously close to parse(paste(...)) and
we know what Thomas said about that (see fortune("parse")).

A safer way of constructing a formula from names stored in a character
variable is

substitute(foo ~ Xvar, list(foo = as.name(Ytext))

> > -----Original Message-----
> > From: r-help-bounces at stat.math.ethz.ch
> > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Pedro Mardones
> > Sent: Thursday, June 14, 2007 1:14 PM
> > To: R-help at stat.math.ethz.ch
> > Subject: [R] question about formula for lm
> >
> > Dear all;
> >
> > Is there any way to make this to work?:
> >
> > .x<-rnorm(50,10,3)
> > .y<-.x+rnorm(50,0,1)
> >
> > X<-data.frame(.x,.y)
> > colnames(X)<-c("Xvar","Yvar")
> >
> > Ytext<-"Yvar"
> >
> > lm(Ytext~Xvar,data=X) # doesn't run
> >
> > lm(Yvar~Xvar,data=X) # does run
> >
> > The main idea is to use Ytext as input in a function, so you
> > just type "Yvar" and the model should fit....
> > Also, I need to avoid the expression X\$Yvar~X\$Xvar
> >
> > Thanks for any idea
> >
> > PM
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help