3

最近このzoo関数を見つけましたna.approxが、再現可能な例を実行した場合に示されるように、タイムゾーンの表示方法を変更せずに使用できる方法があるかどうか疑問に思っていました...

set.seed(111)
x <- xts(matrix(cumprod(rnorm(100,0,0.001)+1)*100,
                ncol=1,dimnames=list(rep("",100),c("JJ"))),
         Sys.time()-c(100:1), tzone="America/Chicago")

x[30:50,] <- NA

tzone(x)
[1] "America/Chicago"
.index(head(x,1))
[1] 1377270598
attr(,"tzone")
[1] "America/Chicago"
attr(,"tclass")
[1] "POSIXct" "POSIXt" 
head(x)
                           JJ
2013-08-23 10:09:57 100.02352
2013-08-23 10:09:58  99.99044
2013-08-23 10:09:59  99.95928
2013-08-23 10:10:00  99.72914
2013-08-23 10:10:01  99.71210
2013-08-23 10:10:02  99.72609
Warning message:
timezone of object (America/Chicago) is different than current timezone (). 



y <- na.approx(x)

tzone(y)
[1] "America/Chicago"
.index(head(y,1))
[1] 1377270598
head(y)
                           JJ
2013-08-23 16:09:57 100.02352
2013-08-23 16:09:58  99.99044
2013-08-23 16:09:59  99.95928
2013-08-23 16:10:00  99.72914
2013-08-23 16:10:01  99.71210
2013-08-23 16:10:02  99.72609
Warning message:
timezone of object (America/Chicago) is different than current timezone (). 

NB 私はシカゴに拠点を置いていません....そして私のSys.getenv('TZ')はに設定されていません"America/Chicago"

4

1 に答える 1

2

編集: xts 0.9-3 で問題を再現できました。xts 0.9-5 で修正されています。xts を更新する必要があります。


これはバグと見なすことができると思います。

head(x)
#                           JJ
#2013-08-23 14:12:19 100.02352
#2013-08-23 14:12:20  99.99044
#2013-08-23 14:12:21  99.95928
#2013-08-23 14:12:22  99.72914
#2013-08-23 14:12:23  99.71210
#2013-08-23 14:12:24  99.72609

methods(na.approx)
#[1] na.approx.default na.approx.ts*     na.approx.zoo*    na.approx.zooreg*

したがって、xts メソッドはありません。以来

class(x)
#[1] "xts" "zoo"

na.approx.zoo発送されます。その関数内で本質的にこれが起こります:

index(x) <- index(x)
head(x)
#                           JJ
#2013-08-23 21:12:19 100.02352
#2013-08-23 21:12:20  99.99044
#2013-08-23 21:12:21  99.95928
#2013-08-23 21:12:22  99.72914
#2013-08-23 21:12:23  99.71210
#2013-08-23 21:12:24  99.72609

index<-.xtsが存在し、ここで使用されていることに注意してください。残念ながら、 とは異なり、index<-.zoo(インデックスの) タイム ゾーンは保持されません。

y <- na.approx(as.zoo(x))したがって、問題を回避するために使用できます。

于 2013-08-23T19:28:36.443 に答える