创建一个带有日期戳但最初没有列的XTS对象

时间:2011-07-20 01:58:50

标签: r xts

x是一个充满数据的xts对象;让我们假设OHLC数据为例。 我想创建另一个xts对象,具有相同的大小和日期戳,但不同的列(例如一些指示符)。

我目前的做法很粗糙:

a = x$close
for(nn in 1:10){
    z = analysis(x,nn) #Returns an enhanced version of x
    z2 = z$result   #Get out just the data I want, so I can rename the column
    colnames(z2) = paste("result",nn,sep="_")
    a = cbind(a,z2) #Merge in each result
    }
a$close = NULL  #Tidyup

即。我只从x,任何旧列中引入一列,只是为了得到结构,然后在最后扔掉它。 (它有效,所以我很高兴,但感觉必须有更好的方法。)

我试过这样的想法:

a = xts(index(x))
a = xts(orderby=index(x))
a = as.xts(index(x))
a = as.xts(orderby=index(x))

但是他们给了我空的XTS对象。例如。当我尝试这个时,我得到一个错误:

a$dummy = 1

2 个答案:

答案 0 :(得分:5)

请注意,参数为order.by,而不是orderby。但这并不能解决您的问题。你在寻找的是:

a <- xts(order.by=index(x))
a <- merge(a, dummy=1)

a$dummy <- 1不起作用,因为zoo对象可以是向量或矩阵,而xts对象总是一个矩阵,并且没有$<-.xts方法。

答案 1 :(得分:1)

试试这个:

library(xts)
L <- list()
L$x <- xts(1:4, as.Date(1:4))
L$y <- xts(1:4, as.Date(1:4))
do.call("merge", L)