1
単純移動平均(SMA)と指数移動平均(EMA)を計算する関数を作成したいと考えています。Rの再帰関数の中で定数変数を定義するにはどうすればよいですか?
私の問題はEMAの実装にあります。私はその引数の1つと等しい再帰関数内に定数変数を設定したいと思います。ここ
は私のコードである:
#SMA
sma <- function(P,t,n)
{
return(sum(P[(t-n):(t-1)])/n)
}
#EMA
recursive.ema <- function(P,t,n)
{
# Here I want to create a constant variable that keeps in memory the first
# value of t, i.e. the value of t before the first recursion, so I can use
# it as argument of sma function.
# Something similar to this: tmp <- t (t given from outside the function)
b <- 2/(n+1)
if (t == 1)
{
return(b*P[1] + (1-b)*sma(P,tmp,n))
}
return (b*P[t] + (1-b)*recursive.ema(P,t-1,n))
}
ここでPは、価格のベクトル、時系列であり、tはベクトルのインデックス、私のモデルの時間であり、そしてnは任意の正の数である、に対応します時刻tでの遅れ時間。
これは機能しません。これを実行するとどうなりますか? 'P'、' t'、 'n'の値をいくつか与えることもできます。 – Suren
投稿のコードが完全ではありません。私には助けが必要な部分があります(コメントを見てください)。私は 'recursive.ema < - function(P、t、n、tmp)'を作成することができましたが、確かに良いデザインがあると思いました。 – Zizou23
'tmp < - t'(または' t [1] ')の何が問題なのですか? – r2evans