Вы можете сделать это довольно легко, в зависимости от того, что вы подразумеваете под «текущей датой».
Если текущая дата - это последняя запись (только что обновленные данные), то последняя и первая помогут:
> x <- xts(1:10, Sys.Date()-0:9)
> x <- xts(1:10, Sys.Date()-0:9)
> x
[,1]
2011-02-16 10
2011-02-17 9
2011-02-18 8
2011-02-19 7
2011-02-20 6
2011-02-21 5
2011-02-22 4
2011-02-23 3
2011-02-24 2
2011-02-25 1
# gets the last 3 periods (days here)
> last(x,3) # or last(x, "3 days")
[,1]
2011-02-23 3
2011-02-24 2
2011-02-25 1
# this would get you the 3rd day back from the end
> first(last(x,3),1)
[,1]
2011-02-23 3
Если вместо этого вам нужно, чтобы текущая дата означала что-то вроде даты, о которой вы заботитесь в этом конкретном цикле / контексте, аргумент which.i = TRUE для подмножества поможет- поскольку он использует тот же самый быстрый поиск ISO, но возвращает позиции, которые соответствуют.То есть он не выполняет подмножество.
> x[x["2011-02-25", which.i=TRUE] - 0] # today
[,1]
2011-02-25 1
> x[x["2011-02-25", which.i=TRUE] - 1] # yesterday
[,1]
2011-02-24 2
> x[x["2011-02-25", which.i=TRUE] - 2] # 2 days ago...
[,1]
2011-02-23 3
> x[x["2011-02-25", which.i=TRUE] - 3] # you get the idea ;-)
[,1]
2011-02-22 4
> x["2011-02-25", which.i=TRUE]
[1] 10