我想rbind.zoo两个动物园的对象在一起。当我在测试时,我遇到了以下问题(?)...
注意:下面是一个例子,除了说明性之外,它显然没有任何意义。我有一个动物园对象,叫它'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个组件的比较> >”
发布于 2009-12-14 12:12:14
是的,您可能在处理属性方面发现了一个bug。另一方面,谁在乎呢?c和d实际上是平等的:
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的维护者,说明一下情况。
发布于 2010-03-30 18:25:08
R并不一致地对待POSIXct对象的tzone属性。动物园和这件事无关。即使根本不使用zoo,你也可以想出这样的例子。除了tzone属性之外,原始代码中的c和d实际上是相等的。
如果删除tzone属性,则c和d将相等:
attr(X.date, "tzone") <- NULL ##### add after defining X.date在zoo的情况下,因为它支持几乎任何时间类,所以如果不需要时区,可以考虑使用不同的时间类。如果你不需要时区,它会让事情变得更复杂。例如,在这里的示例中,我们可以使用Date类。
请阅读R新闻4/1了解更多信息。
https://stackoverflow.com/questions/1898815
复制相似问题