2011-06-24 27 views
21

Tôi đang sử dụng các đối tượng sở thú, mua câu hỏi của tôi cũng áp dụng cho các đối tượng xts. Nó trông giống như tôi là một vector một cột với một chỉ mục. Trong trường hợp của tôi, chỉ mục là vectơ của các ngày và một cột vectơ dữ liệu của tôi. Tất cả đều tốt ngoại trừ việc tôi muốn truy cập vào các ngày (từ chỉ mục).Truy cập zoo hoặc xts index

Ví dụ tôi có kết quả sau:

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 

Tôi muốn nhận 14789 trong một biến hoặc một vector, nhưng tôi không chắc chắn làm thế nào để truy cập vào nó.

+2

Chào mừng bạn đến với SO, @feschet Câu hỏi hay với mã ví dụ tốt. +1 – Andrie

+0

Chào mừng bạn! Đây là một chủ đề liên quan nhấn mạnh sự liên quan bổ sung của câu trả lời của mbq ngay cả khi Andrie hoàn toàn phù hợp. –

+3

* Tôi dành hàng giờ để tìm kiếm điều đó * Thật sao? Có lẽ bạn nên bắt đầu với các họa tiết vườn thú tuyệt vời. –

Trả lời

25

Từ sự giúp đỡ cho ?zoo, có hai phương pháp thuận tiện để truy cập dữ liệu trong đối tượng sở thú:

  • coredata() trả về dữ liệu trong đối tượng sở thú
  • index() trả về chỉ số

Ví dụ:

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 
+0

cảm ơn rất nhiều công việc hoàn hảo – feschet

+4

Vui mừng được giúp đỡ. Nếu câu trả lời hữu ích, bạn có thể đánh dấu câu trả lời là đã được chấp nhận. Xem http://meta.stackexchange.com/q/5234/161858 – Andrie

+0

+1 Câu trả lời hay. – mbq

9

Nói chung, khi bạn nhìn thấy attr, điều này có nghĩa là dữ liệu này là một attribute của một đối tượng.

attributes chức năng có thể được sử dụng để đổ tất cả các thuộc tính như một danh sách, vì vậy bạn có thể truy cập vào yếu tố nhất định với $:

attributes(ObjZoo)$index 

attr cung cấp cho bạn truy cập trực tiếp vào thuộc tính theo tên của nó:

attr(ObjZoo,"index") 

Thực tế, đây là những gì index thực hiện:

> zoo:::index.zoo 

function (x, ...) 
{ 
    attr(x, "index") 
} 
<environment: namespace:zoo> 
Các vấn đề liên quan