2

これは可能ですか?mapply例を使用することはできhelpますが、簡単な例を使用することはできませんlmlmこれは、オブジェクトのリストではなく、マトリックスを返す私の試みです。

temp.df <- list(
                data.frame(a = rep(1:10, each = 10), b = 1:100, c = rnorm(100), d = rnorm(100, 2))
                           )
temp.df[[2]] <- subset(temp.df[[1]], a > 2)
temp.mod <- list(a ~ b,
              a ~ b + c,
             a ~ b + c + d)
temp.lm <- mapply(lm, formula = temp.mod, data = temp.df[c(1,1,2)])
temp.sum <- lapply(temp.lm, summary)

毎回lapply指定して固執する必要がありますか?data =ありがとう!

4

1 に答える 1

3

毎回データを指定する意味がわかりませんが、すべてをより大きな (ネストされた) リストにパックし、lm() と summary() を呼び出す独自のラッパー関数を作成する場合は、lapply が適切なオプションです。

bigList <-  list(m1=list(dat=temp.df[[1]],mod=temp.mod[[1]]),
              m1=list(dat=temp.df[[2]],mod=temp.mod[[2]]))

fitLM <- function(x){
lm1 <- lm(x$mod,data=x$dat)
return(summary(lm1))
}


temp.lm <- lapply(bigList,FUN=fitLM)

編集: mapply の動作をフォローアップするために、コードを実行すると、関連するすべての lm オブジェクト情報を実際に含む 12x3 マトリックスを取得しますが、クラス属性は失われています。それをリセットしてから、lapply-ing summary() は元のコードで機能すると思います。しかし、この場合、ネストされた引数のリストと lapply() の方が簡単だと思います。

lmList <- list(a=temp.lm[,1],b=temp.lm[,2],c=temp.lm[,3])
lmList <- lapply(lmList,function(x){class(x) <- "lm";return(x)})
temp.sum <- lapply(lmList, summary)
于 2011-06-02T22:24:22.850 に答える