0

2 つの Zoo オブジェクトを一緒に rbind.zoo したい。私がテストしていたとき、私は次の問題に出くわしました(?)...

注: 以下は一例であり、説明以外に意味がないことは明らかです。'X' という名前の動物園オブジェクトがあります。私はそれを 2 つの部分に分割し、それらを一緒に 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 つのコンポーネントの比較 > >"

4

2 に答える 2

4

R は POSIXct オブジェクトの tzone 属性を一貫して扱いません。動物園は関係ありません。Zoo をまったく使用しなくても、このような例を思い付くことができます。元のコードの c と d は、tzone 属性を除いて実際には同じです。

tzone 属性を削除すると、c と d は等しくなります。

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

動物園の場合、ほぼすべてのタイム クラスをサポートしているため、タイム ゾーンが必要ない場合は、別のタイム クラスの使用を検討できます。タイムゾーンは、必要がない場合、正当な理由もなく物事を複雑にするだけです. この例では、たとえば Date クラスを使用できます。

詳細については、R News 4/1 をお読みください。

于 2010-03-30T10:25:07.540 に答える
1

はい、属性の処理に関してバグが見つかった可能性があります。一方、誰が気にしますか? 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ケースを説明するメンテナーに丁寧なメールを送ることをお勧めします。

于 2009-12-14T04:12:14.350 に答える