2012-02-27 6 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 

NOTE

あります2 TZ:transform()の呼び出し後にstr(myxts)の出力にEST/EDTフィールドが追加されました。

答えて

3

は、私はこの問題はTZのas.xtsによって設定されたインデックス()とXTS()の間のミスマッチであると思います。私のTZ環境変数は設定されておらず、元のxtsオブジェクトはstr()によって報告された特定のTZ値なしで作成されました。

しかし、呼び出しの後に変換するために()とas.xts()、TZ指数はEST/EDTに設定されています。 as.xts()はおそらくenv変数以外の他のソースからタイムゾーンを取得します。空の文字列(または任意のTZのenv可変値)にTZインデックスを強制することによって

Iは(as.xtsに割出し選択を復元することができた)オブジェクト:

indexTZ(myxts) = Sys.getenv("TZ") 
関連する問題