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")
4

2 回答 2

8

请确保您使用的是最新版本的软件包。从版本 4.5.3(自 2013 年 11 月起在 CRAN 上可用)开始,stargazer已经能够以您期望的方式接受对象列表:

stargazer(l, title="Results", align=TRUE, type="text")

于 2014-02-28T05:28:37.493 回答
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 )

另一种方法是对 stargazer 函数进行 curry:

require(functional)
sgCurried <- Curry( stargazer, type="text" ) # all arguments to stargazer go in here
do.call( sgCurried, l )
于 2014-02-27T21:41:37.313 回答