【发布时间】:2011-04-18 00:55:12
【问题描述】:
我有两个 xts 对象。
> require(quantmod)
> getSymbols("GLD;SLV")
[1] "GLD" "SLV"
> head(SLV, n=2)
SLV.Open SLV.High SLV.Low SLV.Close SLV.Volume SLV.Adjusted
2007-01-03 129.96 131.16 124.70 125.58 7480000 12.56
2007-01-04 126.04 127.97 125.45 125.80 3220000 12.58
> head(GLD, n=2)
GLD.Open GLD.High GLD.Low GLD.Close GLD.Volume GLD.Adjusted
2007-01-03 63.58 64.02 62.00 62.28 8061900 62.28
2007-01-04 62.07 62.50 61.52 61.65 4858600 61.65
> NROW(SLV) == NROW(GLD)
[1] TRUE
如何将这些单独的二维矩阵“堆叠”成单个 3 维数组?
大致如下:
metal <- xts_stacking_function (GLD, SLV)
class(metal)
[1] "array"
metal[1,,1]
GLD.Open GLD.High GLD.Low GLD.Close GLD.Volume GLD.Adjusted
2007-01-03 63.58 64.02 62 62.28 8061900 62.28
【问题讨论】:
-
首先,GLD 和 SLV 不是数组,它们是 xts 对象。其次,这里的 3D 数组是什么意思?如果您希望他们共享索引,请尝试 newvar
-
你能提供一个你想要的输出示例吗?
-
@bill merge(SLV, GLD) 将返回一个二维的 xts 对象,而不是我要查找的数组对象。
-
@Milktrader:它必须是一个数组吗? xts 对象列表会起作用吗?如果您描述更多您正在尝试做的事情,也许我们可以创建一个解决方案。
-
@Joshua,我考虑使用 xts 对象列表而不是数组,并认为数组可能会更简单,但我正在重新考虑这种方法。我的最终目标是组织交易系统的一大组排列,每个排列都有其相关的交易信号和回报,然后轻松地对整个“空间”进行计算。我会多考虑一下,也许会提出一个更好的问题。