Skip to content
Prev 132922 / 398502 Next

refering to variable names in lm where the variable name is in another variable

On Dec 30, 2007, at 12:49 PM, Daniel O'Shea wrote:

            
There's probably a number of ways to go about it. The problem is that  
nam[1] is a string vector, while you want the underlying "symbol". In  
your case, I think the simplest solution would be:

frm <- formula(paste("y~",nam[1]))
mod<-lm(frm,data=dat)

This would also work:

frm <- bquote(y~.(var1), list(var1=as.name(nam[1])))
mod<-lm(frm,data=dat)

This however does have a possible sideeffect, as in the following:
frm <- bquote(y~.(var1), list(var1=as.name(nam[2])))
mod2 <- update(mod)

mod2 is now the model for x2, even though we didn't give it an  
explicit new formula (The old formula had kept the difference in frm.

You can probably avoid this by:
mod<-lm(bquote(y~.(var1), list(var1=as.name(nam[1]))),data=dat)

Though again the name of the formula is not very pretty. The best  
one, from the point of view of getting the correct call in lm,  
probably is:

eval(bquote(lm(y~.(var1), data=dat), list(var1=as.name(nam[1]))))
Hope this helps,
Haris Skiadas
Department of Mathematics and Computer Science
Hanover College