2011-08-09 4 views
3

xts 개체 목록 작업에 문제가 있습니다. 목록 요소에서 lapply을 실행할 때마다 이상하고 다른 동작이 발생하며 때로는 프로그램 segfaults가 발생합니다. Windows XP에서 2.13.1과 비슷한 문제를 겪고 있었지만 우분투 9.10에서 R 2.12.2를 실행 중입니다.세분화 오류 R의 XTS 개체 목록과 함께 작동

분기 별 재무 데이터가 포함 된 데이터 프레임을 여러 시간 시리즈로 분할하려고합니다. 정수 인 CIK 코드에서 데이터 프레임을 분할합니다. dataframe은 다음과 같습니다

> head(CQ[,c("datadate","fqtr","cik","ibq","mkvaltq","prccq","sic")]) 
    datadate fqtr cik  ibq mkvaltq prccq sic 
3 2009-12-31 1 61478 3.400 601.12800 6.21 3661 
4 2010-03-31 2 61478 -13.000 709.07000 7.31 3661 
5 2010-06-30 3 61478 75.900 718.77000 7.41 3661 
6 2010-09-30 4 61478 10.900 1231.52400 12.67 3661 
7 2004-03-31 3 319126 0.424 9.73455 1.05 3861 
8 2004-06-30 4 319126 0.407 13.90650 1.50 3861 
... 

내가 XTS 개체의 목록을 만드는 데 사용하고 코드는 다음과 같습니다

CQT<-by(CQ[c("datadate","ibq","cik","mkvaltq","prccq","sic","fqtr")],CQ$cik,function(x) 
    { 
    xts(x,order.by=x$datadate,frequency=4) 
    } 
) 
CQT<-as.list(CQT) 

나는리스트로 변환 엄격하게 필요하다는 것을 잘 모르겠지만, I 목록에 익숙하다. 내가 CQTlapply를 실행하려고하면

> head(CQT) 
$`20` 
      datadate  ibq  cik mkvaltq  prccq  sic fqtr 
2004-03-31 "2004-03-31" "1.422" "20" " 53.75880" " 21.8000" "3823" "1" 
2004-06-30 "2004-06-30" "1.389" "20" " 55.04400" " 22.0000" "3823" "2" 
2004-09-30 "2004-09-30" "1.562" "20" " 55.69816" " 22.1200" "3823" "3" 
2004-12-31 "2004-12-31" "2.237" "20" " 67.11840" " 26.5500" "3823" "4" 
2005-03-31 "2005-03-31" "1.643" "20" " 77.28716" " 30.4400" "3823" "1" 
2005-06-30 "2005-06-30" "1.916" "20" " 75.12520" " 29.3000" "3823" "2" 
... 

문제가 발생합니다 :

이 나에게 올바른 표시되는 다음과 같은 데이터 구조를 만듭니다. 문제를 여러 번 경험 후, 나는 내 테스트 코드를 응축 한 :

lapply(CQT,function(x) { 
    lag.xts(x[,"prccq"],1) 
    } 
) 

나는이 작업을 얻을 수 있다면, 나는 곧 정상 궤도에있을 수 있습니다 그림.

이 코드는 경우에 따라 세분화됩니다. 예를 들어, (게시 목적으로) 실행 한 가장 최근 반복에서 코드는 여러 레코드를 통해 정상적으로 처리됩니다. 예를 들어 :

$`6720` 

Error in vector(storage.mode(x)) : 
vector: cannot make a vector of mode 'NULL'. 

이 오류는 항상되지 않습니다 : 그러나

$`6494` 
      prccq 
2004-03-31 NA  
2004-06-30 "0.240" 
2004-09-30 "0.150" 
2004-12-31 "0.090" 
2005-03-31 "0.062" 
... 

, 그 다음에 발생합니다 가끔 문자 또는 뭔가에 대한 불만을 얻을, 그것은 같은 기록에 중단 적이있다 두번. 이 특정 레코드에 아무런 문제가없는 것으로 보입니다.

> CQT$"6720" 
      datadate  ibq  cik mkvaltq prccq sic fqtr 
2004-03-31 "2004-03-31" " 10.740" "6720" "559.8638" "16.03" "3949" "1" 
2004-06-30 "2004-06-30" " 6.178" "6720" "558.6060" "15.70" "3949" "2" 
2004-09-30 "2004-09-30" " 13.198" "6720" "667.6474" "14.31" "3949" "3" 
2004-12-31 "2004-12-31" " 8.825" "6720" "743.1205" "15.88" "3949" "4" 
2005-03-31 "2005-03-31" " 2.324" "6720" "643.6650" "13.75" "3949" "1" 
2005-06-30 "2005-06-30" " 1.453" "6720" "594.0200" "12.68" "3949" "2" 
2005-09-30 "2005-09-30" " 16.740" "6720" "534.5802" "11.40" "3949" "3" 
2005-12-31 "2005-12-31" "-232.078" "6720" "474.1590" "10.11" "3949" "4" 
2006-03-31 "2006-03-31" " 3.642" "6720" "589.5614" "12.55" "3949" "1" 
2006-06-30 "2006-06-30" " 2.143" "6720" "514.9567" "10.94" "3949" "2" 
2006-09-30 "2006-09-30" " 21.518" "6720" "552.9757" "11.73" "3949" "3" 
2006-12-31 "2006-12-31" " 10.385" "6720" "651.7707" "13.19" "3949" "4" 
2007-03-31 "2007-03-31" " 4.767" "6720" "597.7659" "12.09" "3949" "1" 

저는이 사실에 대해 저의 지혜가 있습니다. (xts 객체 목록으로 작업하는 좋은 예를 찾을 수 없었습니다.) 또는 xts 패키지에 문제가있는 경우 잘 모르겠습니다. 패키지를 제거하고 R-Forge repo를 사용하여 다시 설치 한 xts를 다시 설치 했으므로 최신 버전을 가져야합니다.

내가 제공 할 수있는 추가 정보가 있으면 알려 주시기 바랍니다.

+1

segfault (이 경우 공동 작성자) 인 경우 패키지 관리자에게 이메일을 보내야합니다. 그들은 버그에 의해 발생합니다. R-forge 버전은 불안정 할 수 있습니다. 가장 최근의 CRAN 버전 (R-2.13.1 사용)에 여전히 문제가 있습니까? –

+0

Nevermind; CRAN 버전을 사용하여 복제 할 수 있습니다. –

+0

Josh의 첫 번째 대답을 명확히하기 위해 : C 또는 Fortran 코드를 컴파일하고 링크하지 않은 경우 세그먼테이션 결함은 항상 버그로 간주됩니다. 그것은 종종 기저가 아닌 공헌 된 패키지의 버그입니다. –

답변

5

지연의 C 코드가 zoo 패키지에 있고, 패치가 R-forge 소스에 적용되어 있지만 아직 CRAN 버전이 아닙니다. 이것은 일주일 전에 고쳐졌습니다.

zoo (R-forge에서 버전 번호가 동일 할 수 있음) 업데이트 및 작동하는지 확인해야합니다.

+0

응답을 주셔서 감사합니다, Jeff. R-forge에서 설치하려고하는데 문제가 있습니다. 'install.packages'에서 ** 동물원 **을 설치하려고하면'패키지를 찾을 수 없습니다 '오류가 발생합니다. tarball을 다운로드하고 ('install.packages' 또는'R CMD INSTALL'을 사용하여) 설치하려고하면'getOct (block, 100, 8)의 오류 : 잘못된 8 진수'가 표시됩니다. 어떤 아이디어가 문제 일 수 있겠습니까? – Matt

+0

그래, Windows에서 2.13.1에 설치할 수 있었으므로 확실히 수정되었습니다. Linux의 경우 업데이트가 CRAN에 적용될 때까지 기다렸다가 그 시점에서 ** zoo ** 업데이트가 2.12에서 작동하기를 바랍니다. – Matt

+0

getOct에 어떤 문제가 있는지 알 수는 없지만 xts를 zoo_lag 함수의 로컬 복사본으로 패치 할 수 있는지 알 수 있습니다. 적어도 동물원이 CRAN에서 업데이트 될 때까지. –