[R] Get variable names from results of lm()

arun smartpink111 at yahoo.com
Wed May 23 21:52:46 CEST 2012


Hi Marc,

Just to point out some difference,


 x <- 1:20
  y <-  x + (x/4 - 2)^3 + rnorm(20, sd=3)
      names(y) <- paste("O",x,sep=".")
       ww <- rep(1,20); ww[13] <- 0
      summary(lmxy <- lm(y ~ x + I(x^2)+I(x^3) + I((x-10)^2),
                          weights = ww), cor = TRUE)


> all.vars(formula(lmxy))
[1] "y" "x"


> variable.names(lmxy)
[1] "(Intercept)" "x"           "I(x^2)"      "I(x^3)"   



A.K.

----- Original Message -----
From: Marc Schwartz <marc_schwartz at me.com>
To: Peter Ehlers <ehlers at ucalgary.ca>
Cc: "r-help at r-project.org" <r-help at r-project.org>; jdub <jack at ramas.com>
Sent: Wednesday, May 23, 2012 3:12 PM
Subject: Re: [R] Get variable names from results of lm()


On May 23, 2012, at 1:42 PM, Peter Ehlers wrote:

> On 2012-05-23 09:55, R. Michael Weylandt wrote:
>> I think the easiest that comes to mind is simply
>> 
>> names(coef(myMod))
>> 
>> But did you look at myMod$terms[[3]] ? That seems to be the RHS of the
>> formula input (in the few cases I tried)
>> 
>> Best,
>> Michael
> 
> It depends a bit on just what the OP wants. In case one of the
> predictors is a factor, say 'grp' with levels c('A','B','C'), the
> coefs will include the names 'grpB' and 'grpC'. If only the
> name 'grp' is wanted, one could use myMod$terms[[3]] or
> equivalently formula(myMod)[[3]]. It might be instructive for the
> OP to look at as.list(formula(myMod)). formula(myMod) is a
> language object which has the tilde operator operate on
> the LHS (component 2) and the RHS (component 3).
> 
> Peter Ehlers


Just to throw out another solution here, the function ?all.vars is helpful:

LM <- lm(Petal.Length ~ ., data = iris)

> formula(LM)
Petal.Length ~ Sepal.Length + Sepal.Width + Petal.Width + Species

> all.vars(formula(LM))
[1] "Petal.Length" "Sepal.Length" "Sepal.Width"  "Petal.Width" 
[5] "Species"  


Regards,

Marc Schwartz


>> On Wed, May 23, 2012 at 10:58 AM, jdub<jack at ramas.com>  wrote:
>>> 
>>> What is the best way to get the variable names used in lm() from its
>>> results?
>>> 
>>> Stumbling around I found I could get the response variable name from
>>> 
>>> myMod$terms[[2]]
>>> 
>>> but using
>>> 
>>> myMod$terms[[1 ]]
>>> 
>>> gives a tilda.
>>> 
>>> I found the names buried in other places in the model object and in the
>>> summary of the model, but is there a more direct way, similar to using
>>> coef(myMod) to get the coefficients?

______________________________________________
R-help at r-project.org 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