首页 > 解决方案 > lapply 模型输出并总结结果

问题描述

我使用 lapply 对多个变量运行模型,现在我必须提取输出的特定部分。这是一个例子:

require(emmeans)
require(lmerTest)


mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8),
   labels=c("4cyl","6cyl","8cyl"))

dvList <- names(mtcars)[3:10]

model <- lapply(dvList, function(x) {
    lm(substitute(i~cyl, list(i = as.name(x))), data = mtcars)})

all<-lapply(model,emmeans,"cyl")

我需要做的是在单个数据集中使用相应的变量名称重命名每个模型中名为“emmean”的所有列。

谢谢

标签: rlapply

解决方案


要知道的主要事情是emmeans()产生一个类对象"emmGrid"(不是数据框)。因此,您需要使用as.data.frame()将其转换为可以提取一列值的形式。因此,做这样的事情:

names(all) <- dvList
tbl <- sapply(all, function(emm) as.data.frame(emm)$emmean)
tbl

结果是

        disp        hp     drat       wt     qsec           vs        am     gear
[1,] 105.1364  82.63636 4.070909 2.285727 19.13727 9.090909e-01 0.7272727 4.090909
[2,] 183.3143 122.28571 3.585714 3.117143 17.97714 5.714286e-01 0.4285714 3.857143
[3,] 353.1000 209.21429 3.229286 3.999214 16.77214 2.220446e-16 0.1428571 3.285714

推荐阅读