将多个列添加到xts对象

时间:2014-01-13 22:37:09

标签: r xts

我对如何简洁地做到这一点感到挣扎。我的解决方案,使用矩阵(...)工作,但似乎有点像大锤。还有更好的吗?

我有一个现有的1行xts对象(D1)和一个来自外部源的非xts向量(E1),我想将它们合并在一起:

library(quantmod)

getSymbols("SPY")
data = get("SPY")
is.xts(data)

# Extract a single row xts object
D1 = data[1,]
index(D1)
# Get the numerical part as a vector
D1v = as.vector(D1)

# New data from external source to be merged
E1 = c(5,6,7,8,9,10)

# Combine into new vector
G1 = c(D1v, E1)
G1

# This fails, I think because xts treats G1 
# like a 1-column object, not a 1-row object?
testXts1 = xts(G1, order.by = index(D1))

testXts2 = xts(matrix(G1, nrow=1), order.by = index(D1))
index(testXts2)
testXts2

我的问题是矩阵(G1,nrow = 1)构造是否是执行此类事物的预期方式,问题是xts需要X和索引(X)具有相同的维度。

谢谢!

1 个答案:

答案 0 :(得分:1)

你想要做的事情是相对不寻常的(单行xts是不寻常的),我认为你找到的成语可能和其他任何东西一样好。

我能想到的另一种方法是一次添加一列:

D1$a = 5
D1$b = 6
D1$c = 7
D1$d = 8
D1$e = 9

这给出了:

> D1
           SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted a b c d e
2007-01-03   142.25   142.86  140.57    141.37   94807600       122.03 5 6 7 8 9