Message-ID: <1A50ED0C-205F-4EFB-B7E9-55C6BDB23F81@me.com>
Date: 2012-05-23T19:12:44Z
From: Marc Schwartz
Subject: Get variable names from results of lm()
In-Reply-To: <4FBD2F7D.9050503@ucalgary.ca>
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?