0

私はこの動物園のベクトルを持っているとしましょう

mine <- zoo(c(rep(0,4),rep(1,4),rep(0,5),rep(1,23),rep(0,4),rep(1,2)),as.chron(seq(1:42)))

そして、いくつかの要素をいくつかの順序で抽出したい

> mine[14]
01/15/70 
       1 
> mine[5]
01/06/70 
       1 
> mine[41]
02/11/70 
       1 

できます!。しかし今、私は別の方法でそれをやろうとしています

zz <- c(14, 5, 41)
mine[zz]

01/06/70 01/15/70 02/11/70 
       1        1        1 

なぜ違う順番で入手するのかわかりません。どうすれば欲しい順序、リストの順序を維持できますか?リスト、ベクトル、列、行のいずれでも構いませんが、要求した順序で取得したいと思います。

乾杯

4

1 に答える 1

4

なぜzooがこれを行うのかについての答えは、関数[( [.zoo)のメソッドがあり、サブセット化された値から新しいzooオブジェクトを作成し、有効なzooオブジェクトになるように論理的に並べ替えたいからです。

関連するアクセサ関数を介して時間インデックスとデータにアクセスすることで、目的を達成できます。

> index(mine)[c(14, 5, 41)]
[1] 01/15/70 01/06/70 02/11/70
> coredata(mine)[c(14, 5, 41)]
[1] 1 1 1

これを 1 つのステップにまとめたい場合は、独自の楽しみを書きます。

myExtract <- function(x, want) {
    out <- coredata(mine)[want]
    names(out) <- index(x)[want]
    out
}

これにより、次のことが得られます。

> myExtract(mine, want = c(14, 5, 41))
01/15/70 01/06/70 02/11/70 
       1        1        1
于 2010-11-25T12:53:52.627 に答える