2017-01-25 2 views
0

私はR.でglmnetで投げ縄をやっている私は投げ縄coefsを持ってout$betaRのglmnetからcoefs名を取得するには?

入力:

x1 0.5744207722 
x2 -0.3575682570 
x3 -0.0995794334 

どのように私は、変数の名前を抽出することができますか?

所望の出力: x1, x2,x3

私が試した何

  1. $
  2. as.data.frame
  3. as.matrix

が、それらのどれもを変換します210をn行2列の行列に変換する。それらはベクトルとして残る。x1 0.5744207722

私は手動で行うことはできません。私は実行する1000以上の変数とより多くのモデルを持っています。そして私はそれを私のディスクに書き込まず、それを読み返すことはしません。

+0

あなたは 'glmnet'のためのドキュメントを見ていましたか?最初の例は 'coef()'を使って各変数の係数を引き出す方法を示しています。 – Barker

+0

名前 'x1'、' x2'はcoefs '0.5744207722'、 '-0.3575682570' –

+0

ではないので' rownames(coef(fit)) 'が必要です。それがあなたが望むことをしなければ、入力と希望の出力を持つ再現可能な例を与えてください。 – Barker

答えて

1

上記の入力に基づいて、glmnetコールを1つのラムダ値で指定したようです。

この場合、names(out$beta[, 1][out$beta[, 1] != 0])のように係数の名前を抽出できます。非ゼロベータの名前のみが抽出されることに注意してください。これは、ラッソが機能低下を実行してからここでラッソを適用すると意味があります。

最小再現可能な例は、このようになります: out <- glmnet(as.matrix(mtcars[-1]), mtcars[["mpg"]], lambda = 1)

関連する問題