2017-09-15 4 views
1

lmplyr関数で係数のレベルによっていくつかの回帰を適合させていますが、summary.lmクラスの内容にアクセスしようとすると問題が発生します。

例として、私のような何かを実行している:これはcyl変数のレベルによって行われ、各回帰の概要を示します

sum = dlply (mtcars, .(cyl), lm, formula = mpg ~ wt) %>% 
    llply(summary) 

を。

例えば、の係数を取得したい場合は、llply (sum,coefficients)で簡単ですが、時にはこれができません。この例では、summary.lmオブジェクト内にfstatistic要素を取得したい場合は、sum$'4'$fstatisticのようなものを手作業で書くことが唯一の方法です。このクラスからF統計を取得する機能はないためです。

次に、オペレータ$、または同様の機能を使用する方法が望ましいです。上記のコードは単なる例に過ぎないことに注意してください。私がここで達成しようとしているのは、summary.lmdataframeのようなオブジェクトから、$演算子を使ってplyr's関数の出力から要素を選択することです。

+1

どう 'dlplyについて(mtcars、。(CYL)、LM、式= MPG〜重量)%>を使用することができます llply(要約)%>%\ '$ \'(\ '4 \')%>%\ '$ \'(fstatistic) ' – G5W

+0

これは非常に良いです。 'cyl'因子のあらゆるレベルに一般化する方法はありますか? – EuGENE

答えて

1

$を機能としてバッククックで囲むことができます。

dlply (mtcars, .(cyl), lm, formula = mpg ~ wt) %>% 
    llply(summary) %>% `$`(`4`) %>% `$`(fstatistic) 
    value numdf dendf 
9.316233 1.000000 9.000000 

あなたがcylのすべてのレベルにそれを適用したい場合は、sapply

dlply (mtcars, .(cyl), lm, formula = mpg ~ wt) %>% 
    llply(summary) %>% sapply(function(x) `$`(x, fstatistic)) 
      4  6   8 
value 9.316233 4.337245 8.795985 
numdf 1.000000 1.000000 1.000000 
dendf 9.000000 5.000000 12.000000 
+0

非常にスマートです、ありがとう! – EuGENE

関連する問題