我对如何简洁地做到这一点感到挣扎。我的解决方案,使用矩阵(...)工作,但似乎有点像大锤。还有更好的吗?
我有一个现有的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)具有相同的维度。
谢谢!
答案 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