从列表创建和调用线性模型

Lca*_*t91 3 r list lm

所以我试图比较不同的线性模型,以确定一个是否优于另一个.但是我有几个模型,所以我想创建一个模型列表然后调用它们.那可能吗?

 Models <- list(lm(y~a),lm(y~b),lm(y~c)
 Models2 <- list(lm(y~a+b),lm(y~a+c),lm(y~b+c))

 anova(Models2[1],Models[1])
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

had*_*ley 6

如果您有两个模型列表,并且想要比较每对模型,那么您需要Map:

models1 <- list(lm(y ~ a), lm(y ~ b), lm(y ~ c)
models2 <- list(lm(y ~ a + b), lm(y ~ a + c), lm(y ~ b + c))

Map(anova, models1, models2)
Run Code Online (Sandbox Code Playgroud)

这基本上等同于以下for循环:

out <- vector("list", length(models1))
for (i in seq_along(out) {
  out[[i]] <- anova(models1[[i]], models2[[i]])
}
Run Code Online (Sandbox Code Playgroud)

Map是一个功能的例子,您可以在https://github.com/hadley/devtools/wiki/Functionals找到更多相关信息.