Доступ к зоопарку или хтс индексу - PullRequest
23 голосов
/ 24 июня 2011

Я использую объекты зоопарка, купить мой вопрос также относится к объектам 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 в переменной или в векторе, но я не уверен, как получить к нему доступ.

Ответы [ 2 ]

32 голосов
/ 24 июня 2011

Из справки для ?zoo есть два удобных метода доступа к данным в объектах зоопарка:

  • coredata() возвращает данные в объекте зоопарка
  • 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
9 голосов
/ 24 июня 2011

В общем, когда вы видите attr, это означает, что эти данные являются атрибутом объекта.

attributes Функция может использоваться для вывода всех атрибутов в виде списка, так что вы можете получить доступ к определенному элементу с помощью $:

attributes(ObjZoo)$index

attr дает вам прямой доступ к атрибуту по его имени:

attr(ObjZoo,"index")

На самом деле это то, что index делает:

> zoo:::index.zoo

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