我是在使用R中的stargazer包一起呈现几个回归的回归结果时想到这个问题的。假设我有3个(实际上我有更多)回归,名称为reg1,reg2,reg3。传统的观星者显示方式是stargazer(reg1,reg2,reg3,(other options))
。
我想知道是否有任何方法生成所有的"reg1到reg3"然后使用输出来替换stargazer参数中的部分。我尝试了sprintf("reg%d",seq(1:3))
之类的东西。然而,Stargazer似乎将输出简单地视为字符串。
我也试过eval(parse(text=cat(paste("stargazer(", paste(sprintf("reg%d",seq(1:3)),collapse = ","), ", type = "text")"))))
,但R卡住了。
有办法使这个工作吗?谢谢!
一种方法是使用do.call
和mget
。
Base R do.call
为第一个实参创建函数调用,并将第二个实参的列表元素转换为该函数的实参。
mget
将从调用环境中的对象创建一个命名列表。在本例中,它在全局环境中找到reg1
、reg2
和reg3
,并将它们组成一个列表。我们可以将mget
创建的列表与我们自己手动定义的c
列表结合起来。
do.call(stargazer, c(mget(sprintf("reg%d",seq(1:3))),other.parameters)))
在这种情况下,other.parameters
应该是您想要传递的其他参数的命名列表。例如
other.parameters <- list(type = "latex")
尝试将第二个命令传入stargazer:
reg_models <- sprintf("reg%d",seq(1:3)) %>% noquote()
reg_models
[1] reg1 reg2 reg3
cat(paste(reg_models, collapse=", "))
reg1, reg2, reg3