2015-05-30 29 views
0

分配给一个日期我假定下面的代码如何值在XTS对象中的R

date = as.Date('2015-05-30') 
timeseries = xts() 
timeseries[date] = 1 

应的1的值分配给一个日期“2015年5月30日”。但是,它给我一个错误

Error in xts(rep(NA, length(index(x))), index(x)) : 
    order.by requires an appropriate time-based object 

什么是正确的方式来分配值的空xts对象?

感谢, 弗拉基米尔

回答

1

我想你误解了[<-.xts函数的用途。您要求将日期为"2015-05-30"的值替换为1,但您的xts对象没有数据,因此没有可替代的内容。你究竟在努力完成什么?

如果你想插入,你应该打电话rbind(xts(1, as.Date('2015-05-30')), timeseries)


而你应该注意Mike Wise's wise advice:这样增长对象效率很低。

1

尝试是这样的:

d1 <- rep(1,21) 
d2 <- seq(as.Date("2001-01-01",tz="GMT"),as.Date("2021-01-01",tz="GMT"),length.out=21) 
xtsdat <- as.xts(d1,d2) 

如果您需要按行末建立起来的行,然后建立个人矢量这种方式,形成了XTS。

+0

我知道这是行得通的,但我提出了另一个问题。我认为vectorlike语法应该适用于xts。 –

+0

'timeSeries = vector()' 'timeSeries [1] = 1' –

+0

也许它的确如此,但这样做是相当“不像R”的。如果R必须一直重新分配,R会变得非常慢。在Hadley的“高级R”一书中有很好的讨论。 –