Использование 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)