2012-02-27 1 views
1

많은 변환을 적용해야하는 xts 숫자 행렬이 있습니다. 이 thread에 따르면 transform()에 의해 반환 된 객체는 as.xts()에 대한 호출로 래핑되어야합니다 (xts에는 자체 변환 버전이 없으며 zoo는 새 객체를 반환합니다).transform/as.xts를 호출 한 후 색인 오류가 발생했습니다.

나는 몇 가지 예제 데이터 변환을 시도하고 그것을 잘 작동하는 것 같다하지만 난 내 자신의 데이터를 실행할 때이 오류가 얻을 : 있습니다

Browse[2]> class(myxts) 
[1] "xts" "zoo" 
Browse[2]> mode(myxts) 
[1] "numeric" 
Browse[2]> str(myxts) 
An 'xts' object from 2011-07-22 09:30:00 to 2011-12-19 16:00:00 containing: 
    Data: num [1:11606, 1:19] 0 158300 157700 157600 157900 ... 
    - attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:19] "Open" "High" "Low" "Close" ... 
    Indexed by objects of class: [POSIXlt,POSIXt] TZ: 
    xts Attributes: 
NULL 
Browse[2]> head(myxts['2011-07-22']) 
         Open High Low Close 
2011-07-22 09:30:00  0  0  0  0  
2011-07-22 09:31:00 158300 158400 157600 157800  
2011-07-22 09:32:00 157700 157700 157500 157700 
2011-07-22 09:33:00 157600 157900 157599 157900 
2011-07-22 09:34:00 157900 158100 157800 158100 
2011-07-22 09:35:00 158000 158400 157900 158200 
Browse[2]> n 
debug: myxts = as.xts(transform(myxts, Open = ifelse(Open == 
    0, NA, Open), Close = ifelse(Close == 0, NA, Close), High = ifelse(High == 
    0, NA, High), Low = ifelse(Low == 0, NA, Low))) 
Browse[2]> class(myxts) 
[1] "xts" "zoo" 
Browse[2]> head(myxts['2011-07-22']) 
Error in function (year = 1970, month = 1, day = 1, hour = 0, min = 0, : 
    unused argument(s) (tz1 = "", tz2 = "EST", tz3 = "EDT") 
Browse[2]> str(myxts) 
An 'xts' object from 2011-07-22 09:30:00 to 2011-12-19 16:00:00 containing: 
    Data: num [1:11606, 1:19] NA 158300 157700 157600 157900 ... 
    - attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:19] "Open" "High" "Low" "Close" ... 
    Indexed by objects of class: [POSIXlt,POSIXt] TZ: 
    TZ: EST 
    TZ: EDT 
    xts Attributes: 
NULL 

주 2 TZ : transform()을 호출 한 후 str (myxts)의 출력에 EST/EDT 필드가 추가되었습니다.

답변

3

문제는 as.xts()와 xts()가 설정 한 TZ 인덱스가 일치하지 않는다고 생각합니다. 내 TZ 환경 변수가 설정되지 않았고 원래의 xts 객체가 str()에 의해보고 된 특정 TZ 값없이 생성되었습니다.

그러나 transform() 및 as.xts()를 호출 한 후 TZ 인덱스는 EST/EDT로 설정됩니다. as.xts()는 아마도 env 변수가 아닌 다른 소스에서 시간대를 가져옵니다.

indexTZ(myxts) = Sys.getenv("TZ") 
(또는 무엇이든 TZ의 ENV 변수 값) I합니다 (as.xts에서 색인 선택을 복원 할 수 있었다) 개체 빈 문자열로 TZ 인덱스를 강제로

관련 문제