【问题标题】:Access zoo or xts index访问 zoo 或 xts 索引
【发布时间】:2011-09-21 20:30:40
【问题描述】:

我正在使用动物园对象,购买我的问题也适用于 xts 对象。在我看来,它是一个带有索引的单列向量。在我的情况下,索引是日期向量和我的数据的一列向量。一切都很好,除了我想访问日期(从索引)。

例如我有以下结果:

ObjZoo <- structure(c(10, 20), .Dim = c(2L, 1L), index = c(14788, 14789),
                    class = "zoo", .Dimnames = list(NULL, "Data"))
unclass(ObjZoo)
#      Data
# [1,]   10
# [2,]   20
# attr(,"index")
# [1] 14788 14789

我想在变量或向量中获取14789,但我不知道如何访问它。

【问题讨论】:

  • 欢迎您!这是一个相关线程,强调 mbq 的答案的额外相关性,即使 Andrie 非常适合。
  • 我花了好几个小时寻找那个 真的吗?也许您应该从出色的动物园小插曲开始。
  • @DirkEddelbuettel,为了公平对待 OP,回想起我早期使用 R 时,我也很难理解帮助文件。 ts 对象完全是个谜(在某种程度上,它们仍然是)。是的,我确实在阅读 ?zoo 后 2 分钟内找到了这个问题的答案,但我仍然对新手的挣扎表示同情。

标签: r xts zoo


【解决方案1】:

一般当你看到attr时,这意味着这个数据是一个对象的attribute

attributes 函数可用于将所有属性转储为列表,因此您可以使用$ 访问某些元素:

attributes(ObjZoo)$index

attr 让您可以通过名称直接访问属性:

attr(ObjZoo,"index")

事实上,index 就是这样做的:

> zoo:::index.zoo

function (x, ...) 
{
    attr(x, "index")
}
<environment: namespace:zoo>

【讨论】:

    【解决方案2】:

    ?zoo的帮助中,有两种方便的方法可以访问zoo对象中的数据:

    • coredata() 返回 zoo 对象中的数据
    • index() 返回索引

    例如:

    x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1
    x <- zoo(rnorm(5), x.Date)
    
    index(x)
    [1] "2003-02-01" "2003-02-03" "2003-02-07" "2003-02-09" "2003-02-14"
    
    coredata(x)
    [1] -1.2487943  0.8911630  1.2713133 -0.1024638  0.2989194
    

    【讨论】:

      猜你喜欢
      • 2012-06-23
      • 2020-07-09
      • 2023-03-03
      • 2013-03-17
      • 1970-01-01
      • 2017-03-28
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多