使用lapply来拟合多个模型 - 如何在lm对象中保持模型公式自包含

Hei*_*erg 3 regression r lapply

以下代码mtcars使用for循环或lapply 将4个不同的模型公式拟合到数据集.在这两种情况下,存储在结果该公式被称为formulas[[1]],formulas[[2]]等等,而不是人类可读的公式.

formulas <- list(
  mpg ~ disp,
  mpg ~ I(1 / disp),
  mpg ~ disp + wt,
  mpg ~ I(1 / disp) + wt
)
res <- vector("list", length=length(formulas))
for (i in seq_along(formulas)) {
  res[[i]] <- lm(formulas[[i]], data=mtcars)
}
res
lapply(formulas, lm, data=mtcars)
Run Code Online (Sandbox Code Playgroud)

有没有办法让结果中显示完整,可读的公式?

MrF*_*ick 6

这应该工作

lapply(formulas, function(x, data) eval(bquote(lm(.(x),data))), data=mtcars)
Run Code Online (Sandbox Code Playgroud)

它重新开始了

[[1]]

Call:
lm(formula = mpg ~ disp, data = data)

Coefficients:
(Intercept)         disp  
   29.59985     -0.04122  


[[2]]

Call:
lm(formula = mpg ~ I(1/disp), data = data)

Coefficients:
(Intercept)    I(1/disp)  
      10.75      1557.67  

....etc
Run Code Online (Sandbox Code Playgroud)

我们使用bquote将公式插入到调用中lm,然后计算表达式.