나는 내 데이터의 서브 세트에 대해 각각의 회귀 분석을 수행하는 회귀 분석을위한 실습 테이블을 작성하려고합니다. 이를 수행하는 자연스러운 방법은 split
을 사용하여 데이터에서 data.frames 목록을 만들고 data.frames 목록에서 lapply
을 사용하여 lm 개체 목록을 만든 다음 그 목록을 stargazer
. 예를 들어,stargazer를 split data.frame을 통해 lapply-ing하는 것에 의해 생성 된 lm 오브젝트의리스트와 함께 사용하기
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")
하지만 내 실제 데이터와
, 나는에 의해 분할 해요 것은 여러 값을 가지고 있으며, 차라리없는 것 그들을 모두 손으로 나눠 라. "% Error : Unrecognized object type."이 표시되는 이유는 무엇입니까? 오류?
나는 왜 당신이 (그리고 나뿐만 아니라) 그 오류를 가져야하는지 알지 못한다. 도움말 페이지는 모델 객체 목록이 수용 가능한 입력이어야 함을 나타냅니다. 'fit'과'fit2' 사이에서 볼 수있는 유일한 차이점은 'fit'이 번호 매김된다는 것입니다. –
이것은 lm 객체가 함수 호출을 저장하는 방법과 관련이있을 수 있습니다. 'lapply (fit, summary)'를 쓰면,'lapply (fit2, summary)'와 비교해서' FUN (수식 = ..1, data = X [[1L]]) 전화 : lm (수식 = crim ~ indus, 데이터 = 보스턴, 부분 집합 = (chas == 0))'. 그러나 그것이 내가 알아낼 수있는 가장 가까운 것입니다. –
매우 흥미 롭습니다. 따라서 fit2 항목은 호출로 저장되지만 필요할 때까지 평가되지 않습니다. R의 게으른 평가 메커니즘의 또 다른 효과처럼 들립니다. 'stargazer'는 평가되지 않은 표현을보고 평가 메커니즘을 통해 그것을 밀어 내지 않습니다. 패키지 관리자에게 보내는 메모가 필요할 수도 있습니다. –