是否可以使用模型列表自动执行plot_summs?

时间:2019-06-04 08:14:38

标签: r ggplot2

是否可以使用模型列表来创建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)

3 个答案:

答案 0 :(得分:2)

您似乎正在寻找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))

答案 1 :(得分:0)

我想知道是否应该使用另一个包来绘制它们,因为您的模型具有不同的协变量。 在这种情况下,我建议您采用以下解决方案:

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

plot_summs(tmp$m1, tmp$m2)

使用dotwhisker软件包的替代解决方案

dwplot(tmp)

这是输出:

enter image description here

答案 2 :(得分:0)

作者添加了作为输入功能的列表,请参见GitHub issue #64,因此下面的 ^ 应该起作用,其中 tmp 是列表:

plot_summs(tmp)

^ 开发版,不久就是cran版本。