欲rbind.zoo 2个动物园对象在一起。当我在测试我遇到了以下问题来了(?)...

注:下面是一个例子,很明显,没有指向它除了是说明性的。 我有一个动物园对象,调用它,“X”。我想把它分成两个部分,然后rbind.zoo在一起。当我比较它与原始对象然后all.equal给出差别。

看来,“$ class属性不同,但我看不出为什么。是我让这些XTS对象则all.equal按预期工作。

即。 .....

X.date <- as.POSIXct(paste("2003-", rep(1:4, 4:1), 
                     "-", sample(1:28, 10, replace = TRUE), sep = ""))

X <- zoo(matrix(rnorm(24), ncol = 2), X.date)

a <- X[c(1:3), ]      # first 3 elements

b <- X[c(4:6), ]      # second 3 elements

c <- rbind.zoo(a, b)  # rbind into an object of 6 elements

d <- X[c(1:6), ]      # all 6 elements

all.equal(c, d)       # are they equal?

~~~~

all.equal给我以下区别:

“属性:<组件3:属性:<长度不匹配:于第一部件1相比较>>”

有帮助吗?

解决方案

是的,你可能已经在属性的处理方面发现了一个错误在那里。在另一方面,谁在乎呢? cd是有效相等:

R> c - d

2003-01-07 0 0
2003-01-15 0 0
2003-01-17 0 0
2003-01-18 0 0
2003-02-17 0 0
2003-02-22 0 0
R> 

检查对象给出什么程:

R> str(c)
‘zoo’ series from 2003-01-07 to 2003-02-22
  Data: num [1:6, 1:2] 0.79 -0.731 1.574 -0.694 0.358 ...
  Index:  POSIXct[1:6], format: "2003-01-07" "2003-01-15" 
      "2003-01-17" "2003-01-18" "2003-02-17" "2003-02-22"
R> str(d)
‘zoo’ series from 2003-01-07 to 2003-02-22
  Data: num [1:6, 1:2] 0.79 -0.731 1.574 -0.694 0.358 ...
  Index:  POSIXct[1:6], format: "2003-01-07" "2003-01-15" 
      "2003-01-17" "2003-01-18" "2003-02-17" "2003-02-22"

我建议你发送一个礼貌的邮件zoo的说明的情况下维护。

其他提示

R不治疗POSIXct的tzone属性一致的对象。动物园无关与此有关。你能想出这样的例子即使不使用动物园的。 c和d在原始代码实际上是除了tzone属性相等。

如果您删除tzone属性然后c和d将等于:

attr(X.date, "tzone") <- NULL  ##### add after defining X.date

在动物园的情况下,因为它支持几乎你可以考虑使用一个不同的时间类,如果你不需要时区的任何时间类。时区只是没有很好的理由,如果你不需要这些复杂的事情。在这里的例子,我们可以使用Date类,例如。

读R新闻4/1更多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top