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