是否可以用xts(亚秒级数)绘制单个第二个周期?

时间:2013-04-30 14:55:16

标签: r xts

我收到错误“if(on ==”years“){(来自#17)中的错误:当尝试在xts中绘制亚秒级序列时,缺少需要TRUE / FALSE的值。也就是说,我的xts对象仅包含对同一秒的观察:

                         value
2013-04-23 13:09:29.0000 471295
2013-04-23 13:09:29.0000 471296
2013-04-23 13:09:29.0002 471297
2013-04-23 13:09:29.0002 471298
2013-04-23 13:09:29.0004 471299
2013-04-23 13:09:29.0004 471300
2013-04-23 13:09:29.0006 471295

有关此错误的类似问题已被问及in this thread但我不清楚是否有解决方法来绘制亚秒级系列。

2 个答案:

答案 0 :(得分:3)

R> zzz <- xts(100+cumsum(rnorm(10)), Sys.time() + cumsum(runif(10))/1e3)
R> zzz
                               [,1]
2013-04-30 10:15:15.588007  98.9827
2013-04-30 10:15:15.588615 100.0029
2013-04-30 10:15:15.589559 100.6558
2013-04-30 10:15:15.590063  98.7353
2013-04-30 10:15:15.590466 100.0204
2013-04-30 10:15:15.590787 100.5416
2013-04-30 10:15:15.591345 100.5990
2013-04-30 10:15:15.591624 100.7908
2013-04-30 10:15:15.592415 101.8566
2013-04-30 10:15:15.592915 102.4576
R> plot(zzz)
Error in if (on == "years") { : missing value where TRUE/FALSE needed
R> traceback()
4: endpoints(x, cl, ck)
3: axTicksByTime(x, major.ticks, format.labels = major.format)
2: plot.xts(zzz)
1: plot(zzz)
R> 

因此错误来自轴格式化。您可以覆盖它,现在要求绘制轴或仅执行

来禁止它
R> plot(as.zoo(zzz))

这很好,因为你的系列无论如何都是单变量的。

答案 1 :(得分:1)

这与this post中的问题基本相同。解决方案是指定major.ticks

> set.seed(1)
> zzz <- xts(100+cumsum(rnorm(10)), .POSIXct(0) + cumsum(runif(10))/1e3)
> plot(zzz, major.ticks="seconds")

enter image description here