【问题标题】:rbind.zoo doesn't seem create consistent zoo objectrbind.zoo 似乎没有创建一致的动物园对象
【发布时间】:2009-12-14 03:54:14
【问题描述】:

我想将 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 给了我以下区别:

“属性:”

【问题讨论】:

    标签: r zoo


    【解决方案1】:

    R 不会一致地处理 POSIXct 对象的 tzone 属性。动物园与此无关。即使根本不使用 zoo,您也可以提出这样的示例。原始代码中的 c 和 d 实际上是相等的,除了 tzone 属性。

    如果您删除 tzone 属性,则 c 和 d 将相等:

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

    对于 zoo,因为它几乎支持任何时间类,如果您不需要时区,您可以考虑使用不同的时间类。如果您不需要时区,则无缘无故地使事情复杂化。例如,在此处的示例中,我们可以使用 Date 类。

    阅读 R News 4/1 了解更多信息。

    【讨论】:

      【解决方案2】:

      是的,您可能已经在属性处理方面发现了一个错误。另一方面,谁在乎? 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的维护者发一封礼貌的邮件来说明这个案例。

      【讨论】:

      • 感谢德克的反馈。我试图弄清楚我是否应该关心。我想我会把它传递给维护者并继续做我正在做的事情。
      猜你喜欢
      • 2012-01-23
      • 1970-01-01
      • 2011-12-14
      • 2012-02-27
      • 2019-10-20
      • 1970-01-01
      • 2015-03-23
      • 2019-07-14
      • 1970-01-01
      相关资源
      最近更新 更多