关于r:将stargazer与lm对象列表结合使用,这些对象是通过对拆分data.frame进行叠加而创建的

Using stargazer with a list of lm objects created by lapply-ing over a split data.frame

我正在尝试为一组回归创建观星表,在该表中,我对数据的一个子集运行了每个回归。 我认为,执行此操作的自然方法是使用split从我的数据创建data.frames列表,通过在data.frames列表上使用lapply创建lm对象的列表,然后 将该列表提供给stargazer。 例如,

1
2
3
4
5
6
7
8
9
10
11
12
library(MASS)
library(stargazer)

data(Boston)

# This doesn't work
by.river <- split(Boston, Boston$chas)
fit <- lapply(by.river, lm, formula = crim ~ indus)
stargazer(fit, type ="text")

# % Error: Unrecognized object type.
# % Error: Unrecognized object type.

如果我将它们手动分割,效果很好:

1
2
3
4
5
# This works
fit2 <- vector(mode ="list", length = 2)
fit2[[1]] <- lm(crim ~ indus, data = Boston, subset = (chas == 0))
fit2[[2]] <- lm(crim ~ indus, data = Boston, subset = (chas == 1))
stargazer(fit2, type ="text")

但是,根据我的真实数据,我要拆分的东西具有多个值,我宁愿不手工拆分它们。 为什么我会得到"%错误:无法识别的对象类型"的任何想法。 错误?


有一个简单的解决方法,由BondedDust暗示,并通过仔细阅读lapply的帮助来建议。

1
2
3
4
fit <- lapply(by.river, function(dd)lm(crim ~ indus,data=dd))
stargazer(fit, type ="text")
fit[[1]]$call
#lm(formula = crim ~ indus, data = dd)