首页 > 解决方案 > 是否可以使用模型列表自动化 plot_summs?

问题描述

是否可以使用模型列表来创建jtools::plot_summs()图形?我正在批量创建模型,不想将它们一一输入到函数中:

当前工作流程:

library(jtools)

tmp <- list(m1 = lm(mpg ~ cyl + disp, data = mtcars),
            m2 = lm(mpg ~ cyl + hp, data = mtcars))

plot_summs(tmp$m1, tmp$m2)

所需的工作流程:

plot_summs(tmp)

标签: rggplot2

解决方案


看起来您正在寻找do.call:它需要一个要调用的函数和一个参数列表,并在函数中“传播”参数,因此do.call(f, list(a, b, c))相当于f(a, b, c). 优点是您不需要对参数列表进行硬编码。

do.call(plot_summs, tmp)

编辑: 注意,如果您的tmp列表具有示例中的名称,您可以考虑将它们删除为plot_summs,否则do.call将使用 name 作为函数中的参数名称。

例如,
do.call(f, list(m1=1, m2=4))等价于f(m1=1, m2=4)
do.call(f, list(1,4))等价于f(1,4)

因此您可以使用setNames删除列表的名称:

do.call(plot_summs, setNames(tmp, NULL))

推荐阅读