P Sellaz P Sellaz - 7 days ago 6
R Question

Using column numbers not names in lm()

Instead of something like

lm(bp~height+age, data=mydata)
I would like to specify the columns by number, not name.

I tried
lm(mydata[[1]]~mydata[[2]]+mydata[[3]])
but the problem with this is that, in the fitted model, the coefficients are named
mydata[[2]]
,
mydata[[3]]
etc, whereas I would like them to have the real column names.

Perhaps this is a case of not having your cake and eating it, but if the experts could advise whether this is possible I would be grateful

TMS TMS
Answer
lm(
    as.formula(paste(colnames(mydata)[1], "~",
        paste(colnames(mydata)[c(2, 3)], collapse = "+"),
        sep = ""
    )),
    data=mydata
)

Instead of c(2, 3) you can use how many indices you want (no need for for loop).

Comments