xts時系列データに対して直近n日間(計算日前日から数えて過去n日間)の最小値を求める

タイトルの件、すぐに出来なかった。
Rリテラシーが低いことを改めて認識したわ。

さて、やりたいことは改めてこれ。

xts時系列データに対して直近n日間(計算日前日から数えて過去n日間)の最小値を求める

例えば、下記のようにYJ7203.Closeの前日から過去に遡って4日間の最小値を計算したい。
下図はうまく計算できた結果。

rollapply関数を使用して次のように書くと良い。

head(rollapply(lag(YJ7203, k=1), 4, min))

たったこれだけだが、辿り着くまでに相当苦労しましたよw。

以下、苦労の変遷をメモ。
※)上図データとは期間が異なる。

まず元データの確認。

> head(YJ7203)
           YJ7203.Open YJ7203.High YJ7203.Low YJ7203.Close YJ7203.Volume YJ7203.Adjusted
2007-01-04        8110        8140       8060         8090       6986200            8090
2007-01-05        8100        8100       7860         7900      10876000            7900
2007-01-09        7900        7930       7810         7870       9750900            7870
2007-01-10        7890        7890       7660         7690      11632000            7690
2007-01-11        7750        7790       7630         7660      10417100            7660
2007-01-12        7740        7840       7720         7820      11302500            7820

ここでrunMinを使えばいいじゃん!と思って次のようにやった結果。

> head(runMin(YJ7203, n=4))
           [,1]
2007-01-04   NA
2007-01-05   NA
2007-01-09   NA
2007-01-10 7890
2007-01-11 7750
2007-01-12 7740

ふぁああああああああ?なんで6列あったものが1列になっているの?
しかも、求められた結果、計算当日データ含まれているっぽい。。。

ここから迷走。
runMin使えないじゃんということで、自作しようと思った。
で、ここでだいぶハマったが・・・。そこまでメモっとく必要ないか・・・。

以上。