用两行构建一个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
Run Code Online (Sandbox Code Playgroud)
为什么以下不改变第一行的索引?
time(junk[1])<-as.Date("2010-02-01")
junk
> [,1]
> 2010-01-01 1
> 2010-05-01 2
Run Code Online (Sandbox Code Playgroud)
我意识到以下工作,但为什么上述工作没有?
time(junk)[1]<-as.Date("2010-02-01")
junk
> [,1]
> 2010-02-01 1
> 2010-05-01 2
Run Code Online (Sandbox Code Playgroud)
比尔, 谢谢
对这篇文章的直接回答是,attr<-正如乔希所说的那样,魔术就在里面.首先对对象进行子集化,只需创建一个新对象,一旦< - 完成,就会立即处理掉.
此外,您可以通过该.index()函数查看索引的"内部" .本质上是一个double或integer类型的向量,它映射到POSIXct时间 - 附加了一些属性.您要分配的课程会自动来回强制.这使内部更容易维护 - 并允许您在外部需要的任何时间类上执行操作.
一般来说,Date将是保持TZ最简单的方法,并且可以解决问题,但请记住,隐藏方面的成本就是功能index().这将不得不重新创建您期望的对象.
时间序列中的日期不使用“[”引用。它们更像是数据框中的行名。它们存储在属性列表的“索引”叶中。除此之外,它们不是 Date 类,而是 DateTime 类,因此您需要 使用 POSIXct:
> attributes(junk)$index[1] <- as.POSIXct("2010-02-01")
> junk
[,1]
2010-02-01 1
2010-05-01 2
Run Code Online (Sandbox Code Playgroud)
编辑:更准确地说,attribute$index 内部以秒为单位,但 time 方法将接受各种分配类。
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |