2011-10-12 6 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

고마워, @ 벤. 또한,'lm() '(그러나 다른 모델들에 대해서)에는 필요하지 않더라도'as.formula'를 사용하면 더 강력 할 것입니다. – TMS

+0

감사합니다. 이것은 벤 볼커 (Ben Bolker)가 이전에 제안한 바를 설명하고 완벽하게 작동합니다. –

관련 문제