R:如何使用函数生成部分函数参数

  • 本文关键字:函数 成部 参数 何使用 r
  • 更新时间 :
  • 英文 :


我是在使用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.callmget

Base R do.call为第一个实参创建函数调用,并将第二个实参的列表元素转换为该函数的实参。

mget将从调用环境中的对象创建一个命名列表。在本例中,它在全局环境中找到reg1reg2reg3,并将它们组成一个列表。我们可以将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

最新更新