Как мне вызвать звездочета в списке моделей?

StackOverflow https://stackoverflow.com//questions/22081097

  •  24-12-2019
  •  | 
  •  

Вопрос

Я только что запустил серию моделей красивым и гибким способом, обеспечивающим разделение кода данных.В разделе конфигурации у меня был хороший список формул и моделей, который я 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.5.3 (доступна на CRAN с ноября 2013 г.), stargazer смог принимать списки объектов именно так, как вы ожидали:

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

Другие советы

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

Другой способ сделать это — каррировать функцию звездочета:

require(functional)
sgCurried <- Curry( stargazer, type="text" ) # all arguments to stargazer go in here
do.call( sgCurried, l )
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top