构建一个包含两行的 xts 对象。
library(xts)
junk<-xts(c(1,2),as.Date(c("2010-01-01","2010-05-01")))
junk
> [,1]
> 2010-01-01 1
> 2010-05-01 2
为什么以下不更改第一行的索引?
time(junk[1])<-as.Date("2010-02-01")
junk
> [,1]
> 2010-01-01 1
> 2010-05-01 2
我意识到以下有效,但为什么以上无效?
time(junk)[1]<-as.Date("2010-02-01")
junk
> [,1]
> 2010-02-01 1
> 2010-05-01 2
谢谢,
账单
最佳答案
直接回复帖子是魔法在attr<-
里面正如乔希所说。首先对对象进行子集化只是创建一个新对象,该对象在 time<- 完成后立即被处理。
此外,您可以通过 .index()
查看索引的“内部”。功能。本质上是一个映射到 POSIXct 时间的 double 或 integer 类型的向量 - 附加了一些属性。您分配的类(class)会自动来回强制。这使得内部更容易维护 - 并让您可以在任何时间类之外做任何事情。
一般来说,Date 将是避免 TZ 和 secs 麻烦的最干净的方法,但请记住,这个隐藏方面的成本是函数 index()
.这将不得不重新创建您期望的对象。
关于r - 设置 xts 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4435011/