I'm trying to create a stargazer table for a set of regressions, where I ran each regression on a subset of my data. The natural way to do this, I would think, is to use split
to create a list of data.frames from my data, create a list of lm objects by using lapply
on the list of data.frames, and then feed that list to stargazer
. For example,
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.
If I divide them up manually, this works fine:
# 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")
But with my real data, the thing I'm splitting by has several values, and I would rather not split them all up by hand. Any ideas why I'm getting the "% Error: Unrecognized object type." error?
fit
andfit2
is thatfit
is numbered. – IRTFMlapply(fit, summary)
, you getCall: FUN(formula = ..1, data = X[[1L]])
, versuslapply(fit2, summary)
, which givesCall: lm(formula = crim ~ indus, data = Boston, subset = (chas == 0))
. But that's the closest I can figure out. – Jake Fisherstargazer
is then seeing an unevaluated expression and doesn't push it through the evaluation mechanism. It might be worth a note to the package maintainer. – IRTFMlapply(formulas, lm, data=my.data)
working would be worthwhile. – chandler