Использование stargazer со списком объектов lm, созданных путем наложения на разделенную data.frame

Я пытаюсь создать таблицу Stargazer для набора регрессий, где я запускал каждую регрессию на подмножестве моих данных. Я думаю, что естественным способом сделать это является использование split чтобы создать список data.frames из моих данных, создайте список объектов lm, используя lapply в списке data.frames, а затем передать этот список в stargazer, Например,

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.

Если я разделю их вручную, это прекрасно работает:

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

Но с моими реальными данными вещь, на которую я делю, имеет несколько значений, и я бы не стал разбивать их вручную. Любые идеи, почему я получаю "% Ошибка: Нераспознанный тип объекта". ошибка?

1 ответ

Решение

Существует простой обходной путь, на который намекает BondedDust и предлагаемый тщательным изучением помощи для lapply,

fit <- lapply(by.river, function(dd)lm(crim ~ indus,data=dd))
stargazer(fit, type = "text")
fit[[1]]$call
#lm(formula = crim ~ indus, data = dd)
Другие вопросы по тегам