2017-01-11 15 views
-2

pglm 패키지의 pglm 함수를 사용하여 순서화 된 물류 모델의 무작위 효과 패널 계산을 얻으려고합니다.'closure'유형의 객체는 패널 로그를 추정하기 위해 R의 pglm :: pglm 함수로 서브 세트 할 수 없습니다

독립 실행 형 함수 pglm을 테스트 할 때 원하는 결과를 얻을 수 있습니다. 여기 내 사양이다 :

pglm::pglm(as.numeric(y)~x1+x2+x3, df,family = pglm::ordinal('logit'), 
      model = "random", method = "bfgs", print.level = 3, R = 5, index = 'Year') 

: 1. 모든 설명 변수 {X1, X2, X3는} 수치 배로되어 2 예 1에서도 22

테이블에 이르는 순서 범주 형 변수 에는 1996 년에서 2014 년 사이의 변수 인 'Year'가 포함되어 패널 데이터를 작성하는 데 사용됩니다.

다른 함수에 pglm 기능을 사용하려고 할 때 : X에서

pdata.frame(data, index) 

오류를 계산할 때

pglm_fun <- function(df){ 

    df <- data.frame(df) 
    pglm::pglm(as.numeric(y)~x1+x2+x3, data = df,family = pglm::ordinal('logit'), 
       model = "random", method = "bfgs", print.level = 3, R = 5, index = 'Year') 

} 

내가 발생하는 오류 메시지가 [na.check!] 'closure'유형의 오브젝트는 서브 세트 할 수 없습니다.

콘솔에서 코드를 실행하려고하면 이러한 오류가 발생하지 않으며 pdata.frame() 기능이 작동합니다. 데이터 프레임의

예 :

df = data.frame(y = sort(rep(1:4,20)), 
     x1 = rnorm(80), 
     x2 = rnorm(80), 
     x3 = rnorm(80), 
     Year = rep(sample(1995:1998, replace = FALSE),20)) 
+1

코드에서'index'은 무엇입니까 : 이 문제는 기능에 개별 이름을 선언하고 전역 변수로 데이터 프레임을 남겨 둠으로써 해결된다? 또한'plm'에'index()'함수가있어 혼란을 야기 할 수 있습니다. 또한 '데이터'란 무엇입니까? 'df'와 어떤 관련이 있습니까? 즉, 재현 가능한 예제를 게시해야합니다. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

변수 'Year''를 인덱스로 설정하고, 데이터는 단순히'pglm_fun' 함수에주는 데이터 프레임입니다. 데이터 프레임 df –

+0

의 예제로 게시물을 편집하겠습니까'pdata.frame (data, index = "Year")'는 어떨까요? –

답변

0

보통, I는 알아 냈다. 이 경우에는 R에 환경 문제가 있습니다. 왜냐하면 제가 사용하고있는 함수는 전역 변수를 직접 사용하는 대신 변수의 복사본을 만드는 것이기 때문입니다.

pglm_fun1 <- function("y","x1","x2","x3","Year"){ 
    require("pglm") 
    pglm(as.numeric(y)~x1+x2+x3, data = df, family = ordinal('logit'), 
      model = "random", method = "bfgs", print.level = 3, R = 5, index = 'Year') 

}