2011-10-12 19 views
15

lm(bp~height+age, data=mydata) gibi bir şey yerine, sütunları numaraya değil, ada göre belirtmek isterim. Sütun numaralarını kullanma lm() içindeki adları değil()

Ben lm(mydata[[1]]~mydata[[2]]+mydata[[3]]) çalıştı ama bu sorun gerçek sütun adları sahip olmalarını istiyorum oysa donatılmış modelinde, katsayılar, mydata[[2]], mydata[[3]] vb adlandırılır, yani.

Belki de bu kek ettirmeden ve yemek değil bir durumdur, ancak uzmanlar bunun mümkün olup olmadığını tavsiye eğer İstediğin kaç endeksleri kullanabilirsiniz

+1

Yapmaya çalıştığınız şey için biraz daha büyük bir bağlam verirseniz daha iyi yanıtlar alabilirsiniz: "Çözmeyi denediğiniz sorun nedir?" –

+0

Yorumunuz için teşekkürler. Bir veri çerçevesinde çok sayıda sütun var. Aşamalı seçim dahil olmak üzere çeşitli teknikler kullanarak bunların bir alt kümesini kullanarak lineer bir model uyguluyorum. Lm() 'yi çağırırken sütunlara göre numaralara başvurabilirsem, ancak mümkünse, modelin sütun isimlerini göstermesini istiyorum. –

+1

http://stackoverflow.com/questions/6877534/understanding-lm-and-environment/6878461#6878461 –

cevap

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

yerine c(2, 3) minnettar olacaktır (döngü için gerek yok).

+1

üçüncü satırın sonunda bir virgül yok mu? –

+0

Teşekkürler, @Ben. Ayrıca, lm() '(ancak diğer modeller için) için gerekli olmasa da," as.formula "kullanılarak daha güçlü olabilirdi. – TMS

+0

Teşekkürler. Bu, Ben Bolker'ın daha önce önerdiği ve mükemmel bir şekilde çalıştığı şeyleri anlatıyor. –