2011-12-21 5 views
0

たとえば、lmオブジェクトのリストがある場合、それをどのように関数anovaに渡すことができますか?関数呼び出しで一連のパラメータの代わりにリストオブジェクトを使用するにはどうすればよいですか?

Rの可変長関数、またはLISPのapplyと同様の関数への参照を検索しようとしましたが、成功しませんでした。

編集:私はそれを得た、これはthis answer.

答えて

1

lapply機能はあなたの友人であるによると、do.callを介して行うことができます。ここに完全でありながら無意味な例があります:

R> set.seed(42)      # be reproducible 
R> X <- matrix(rnorm(100), ncol=2) 
R> y <- vector(mode="list", length=3) 
R> y[[1]] <- runif(50); y[[2]] <- rt(50, 3); y[[3]] <- rbinom(50, 5, 0.5) 

この時点で、候補の従属変数と共通の回帰変数のリストがあります。だから、lapply()を使っていくつかの回帰を一度に実行してから、再び を係数を抽出するために使ってみましょう。

R> fits <- lapply(y, FUN=function(z) { lm(z ~ X) }) 
R> coefs <- lapply(fits, coef) 
R> coefs 
[[1]] 
(Intercept)   X1   X2 
    0.4543939 0.0503187 0.0442636 

[[2]] 
(Intercept)   X1   X2 
    0.1115462 -0.0720639 0.1398801 

[[3]] 
(Intercept)   X1   X2 
    2.3338105 0.0991485 0.0965852 

R> 
+0

答えをありがとう。しかし、 'lapply'はマップ関数のように動作し、入力リストの各要素を変換します。私が必要とするのは、リスト全体をanovaに一度に渡すことです(モデルを比較する)。 –

関連する問題