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

3行目の最後にカンマがありませんか? –

+0

ありがとう、@ベン。また、 'lm()'では必要ではないが、 'as.formula'を使用する方がより堅牢になるかもしれません(しかし、他のモデルではそうです)。 – TMS

+0

ありがとうございます。これは、ベン・ボルカーが以前に提案したことを徹底的に示しています。 –

関連する問題