如何在模型列表中调用stargazer?

10

我刚刚以一种良好的、灵活的方式运行了一系列模型,强制实现数据和代码分离。在我的配置部分中,我有一个漂亮的公式和模型列表,我使用lapply将它们转换为模型对象列表。现在我想在stargazer中显示它们,但它不接受列表对象。如何在不必手动输入每个列表元素的情况下完成此操作?

可重现的例子:

require(stargazer)
l <- list()
l$lm1 <- lm(rating ~ complaints + privileges + learning + raises + critical,
data=attitude)
l$lm2 <- lm(rating ~ complaints + privileges + learning, data=attitude)
## create an indicator dependent variable, and run a probit model
attitude$high.rating <- (attitude$rating > 70)
l$prbt <- glm(high.rating ~ learning + critical + advance, data=attitude,
family = binomial(link = "probit"))
stargazer( l[[1]], l[[2]], l[[3]], title="Results", align=TRUE, type="text")
2个回答

8
请确保使用的软件包是最新版本。从2013年11月起,stargazer的版本已经更新到4.5.3并上架于CRAN(The Comprehensive R Archive Network)。现在,stargazer可以接受对象列表,并且可以按照您期望的方式进行处理:stargazer(l, title="Results", align=TRUE, type="text")

4
使用do.call
do.call( stargazer, l ) 

然而,这种方式不允许以通常的方式传递参数:
> do.call( stargazer, l, type="text" )
Error in do.call(stargazer, l, type = "text") : 
  unused argument (type = "text")

因此,您需要将命名参数添加到列表中:
l$type <- "text"
l$align <- TRUE
l$title <- "Results"
do.call( stargazer, l )

另一种方法是对看星者函数进行柯里化操作:

require(functional)
sgCurried <- Curry( stargazer, type="text" ) # all arguments to stargazer go in here
do.call( sgCurried, l )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接