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

您可以通过相关的访问器函数访问时间索引和数据来实现您想要的:

> 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

如果您想将其合并为一个步骤,请编写您自己的乐趣:

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 回答