如何改进在 R 中使用 for 循环获得的 lm 输出?

How to improve lm output obtained with for loop in R?

为了使用相同的 Y 和不同的 X 评估多个模型,我做了一个 for 循环。 使用 mtcars 数据库我创建了两个子集:

mcars1 <- subset(mtcars, select=c("mpg","hp","disp"))
mcars2 <- subset(mtcars, select=c("mpg","disp"))

for循环如下

for (var in c("mcars1", "mcars2")){
    v <- get(var)
    reg <- lm(mpg~., data=v)
    print(summary(reg)$coef)
}

输出:

               Estimate  Std. Error   t value     Pr(>|t|)
(Intercept) 30.73590425 1.331566129 23.082522 3.262507e-20
hp          -0.02484008 0.013385499 -1.855746 7.367905e-02
disp        -0.03034628 0.007404856 -4.098159 3.062678e-04
               Estimate  Std. Error   t value     Pr(>|t|)
(Intercept) 29.59985476 1.229719515 24.070411 3.576586e-21
disp        -0.04121512 0.004711833 -8.747152 9.380327e-10

如你所见,一切正常。我只想知道我可以使用哪些函数来改进我的输出,例如得到类似的东西:

Model 1
               Estimate  Std. Error   t value     Pr(>|t|)
(Intercept) 30.73590425 1.331566129 23.082522 3.262507e-20***
hp          -0.02484008 0.013385499 -1.855746 7.367905e-02***
disp        -0.03034628 0.007404856 -4.098159 3.062678e-04***


Model 2  
               Estimate  Std. Error   t value     Pr(>|t|)
(Intercept) 29.59985476 1.229719515 24.070411 3.576586e-21***
disp        -0.04121512 0.004711833 -8.747152 9.380327e-10***

任何建议将不胜感激。

lapply(list(mcars1,mcars2),function(x)coef(summary(lm(x))))
[[1]]
               Estimate  Std. Error   t value     Pr(>|t|)
(Intercept) 30.73590425 1.331566129 23.082522 3.262507e-20
hp          -0.02484008 0.013385499 -1.855746 7.367905e-02
disp        -0.03034628 0.007404856 -4.098159 3.062678e-04

[[2]]
               Estimate  Std. Error   t value     Pr(>|t|)
(Intercept) 29.59985476 1.229719515 24.070411 3.576586e-21
disp        -0.04121512 0.004711833 -8.747152 9.380327e-10

或者你可以这样做:

 lapply(list(mcars1,mcars2),function(x)coef(summary(lm(mpg~.,dat=x))))