这可能吗?我可以mapply
使用help
示例,但我无法通过lm
获得一个简单的示例。这是我的尝试,它返回一个矩阵,而不是lm
个对象的列表。
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 =
吗?谢谢!
答案 0 :(得分:3)
不确定每次指定数据的含义,但如果将所有内容打包到一个更大的(嵌套)列表中,并编写自己的包装函数调用lm()和summary(),则lapply是一个不错的选择:< / p>
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行为,当我运行你的代码时,我得到一个12x3矩阵实际上确实包含所有相关的lm对象信息,但class属性已经丢失。我相信重置那个然后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)