2014-02-27 6 views
7

Ich habe gerade eine Reihe von Modellen in einer schönen, flexiblen Art und Weise ausgeführt, die die Datencodetrennung erzwingt. Ich hatte eine schöne Liste von Formeln und Modellen in meinem Konfigurationsabschnitt, die ich lapply über eine Liste von Modellobjekten erhalten würde. Jetzt möchte ich sie in stargazer anzeigen, aber es dauert kein Listenobjekt. Wie mache ich das, ohne jedes Listenelement eingeben zu müssen?Wie rufe ich Stargazer auf einer Liste von Modellen auf?

Reproduzierbare Beispiel:

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

Antwort

5

Bitte stellen Sie sicher, dass Sie eine up-to-date-Version des Pakets verwenden. Ab Version 4.5.3 (auf CRAN seit November 2013) hat stargazer Lage, Listen von Objekt zu akzeptieren, genau so, wie man erwarten würde:

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

4

Verwendung do.call:

do.call(stargazer, l) 

Doch dies schließt in Argumente in der üblichen Art und Weise übergeben:

> do.call(stargazer, l, type="text") 
Error in do.call(stargazer, l, type = "text") : 
    unused argument (type = "text") 

Deshalb haben Sie die hinzufügen benannte Argumente zu der Liste:

l$type <- "text" 
l$align <- TRUE 
l$title <- "Results" 
do.call(stargazer, l) 

Ein anderer Weg, dies zu tun ist, um die Stargazer Funktion Curry:

require(functional) 
sgCurried <- Curry(stargazer, type="text") # all arguments to stargazer go in here 
do.call(sgCurried, l) 
Verwandte Themen