문제

저는 데이터 코드 분리를 강제하는 훌륭하고 유연한 방식으로 일련의 모델을 실행했습니다.구성 섹션에 멋진 공식과 모델 목록이 있었는데, 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(2013년 11월부터 CRAN에서 사용 가능)부터 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 )

이를 수행하는 또 다른 방법은 stargazer 함수를 카레하는 것입니다.

require(functional)
sgCurried <- Curry( stargazer, type="text" ) # all arguments to stargazer go in here
do.call( sgCurried, l )
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top