2011-10-12 52 views
15

而不是像lm(bp~height+age, data=mydata)之類的東西我想用數字而不是名稱來指定列。在lm()中使用列號而不是名字

我試過lm(mydata[[1]]~mydata[[2]]+mydata[[3]])但問題是,在擬合模型中,係數被命名爲mydata[[2]],mydata[[3]]等,而我希望他們有真正的列名稱。

也許這是沒有你的蛋糕,吃它的情況,但如果專家能告知是否可能,我將不勝感激

+1

如果您爲自己想要做的事情給出稍大的上下文,您可能會得到更好的答案:「您嘗試解決的問題是什麼?」 –

+0

感謝您的評論。我在數據框中有大量的列。我正在使用包括逐步選擇在內的各種技術來使用這些子集的線性模型。如果我可以在調用lm()時通過數字來引用列,但是如果可能的話,我希望模型顯示列名稱,這樣會很方便。 –

+1

我會根據名稱粘貼一個公式,如下所示:http://stackoverflow.com/questions/6877534/understanding-lm-and-environment/6878461#6878461 –

回答

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

相反的c(2, 3)你可以使用你要多少指數(不需要for循環)。

+1

在第三行結束時缺少一個逗號? –

+0

謝謝@Ben。另外,也許使用'as.formula'會更健壯,雖然'lm()'不需要(但對於其他模型來說)。 – TMS

+0

謝謝。這闡明瞭本博爾克先前提出的建議,並且完美地工作。 –

相關問題