3
嗨我正在使用R quantmod库,我想查找并返回两个值(今天的体积,昨天的体积)的最大值。使用合并函数从xts对象获取最大值
require(quantmod)
getSymbols("HELE")
# Ok now when I do this it does not return a single column with the highest
# volume
head( merge(HELE, max (HELE$HELE.Volume,lag(HELE$HELE.Volume, k=1 ) )))
这通常工作,因为例如说我想从昨天关闭减去今天的高点我可以做到这一点。
head( merge(HELE, abs(HELE$HELE.High - lag(HELE$HELE.Close, k=1) )))
我也尝试应用功能,但没有工作,以及,
head( merge(HELE, as.xts(apply(c(lag(HELE$HELE.Volume, k=1 ), HELE$HELE.Volume ), 1, max)) ))
在此先感谢。 Ahdee
感谢这个伟大工程;我仍然不完全理解为什么这不起作用。看起来好像是一些使用合并的函数,似乎没有读取特定行的数据,例如,你知道为什么第一个函数失败,但最后一个失败吗? (头(合并(HELE,意思是(c(HELE $ HELE.High,HELE $ HELE.Low,HELE $ HELE.Close)))); (HELE,abs(HELE $ HELE.High- HELE $ HELE.Low-lag(HELE $ HELE.Close,k = 2))))' – Ahdee
第一个失败,因为意思是没有做明智的行计算。意思不是矢量化的。对于平均值的行计算,您需要使用'apply'类型的函数。 '意思是(c(HELE $ HELE.High,HELE $ HELE.Low,HELE $ HELE.Close))'会找到所有这些向量的均值。你不想那样。你想要行明智的手段,所以你不能使用'平均'。这就是为什么我使用'pmax'而不是'max'的原因。尝试'max(c(1,2),c(3,4))'和'pmax(c(1,2),c(3,4))',你会看到不同。不幸的是,没有'pmean'函数,所以你需要''应用''mean'。 – LyzandeR
另一方面'''是矢量化的,所以它会按预期工作。我可以用不同的方式说出它:“mean”不是矢量化的,因此将2个矢量减少为单个值。 '-'被矢量化,所以会返回一个与两个单独起始矢量大小相同的新矢量。我希望这有帮助。 – LyzandeR