题
假设我有这个动物园矢量
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
我不知道为什么要以不同的顺序获得它。我该如何保留我想要的订单,清单的顺序?我不介意它是列表,矢量,列或行,但我想按我要的顺序获取它。
干杯
解决方案
动物园为什么这样做的答案是它具有函数的方法 [
([.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
不隶属于 StackOverflow