条件付きcumsumをしたいです。Reduce機能が使えると思っていたのですが、できませんでした。明確に説明するには:
a <- rep(1,5)
b <- rnorm(n=5,mean=0.5)
c <- rep(2,5)
d <- rep(0.5,5)
Reduce( '+', a, init=200 , accumulate=TRUE)
結果は
[1] 200 201 202 203 204 205
これは単純な cumsum のようなものです。しかし、私が実際に欲しいのは、条件付きの cumsum です:
再帰は次のように定義されます。
x0 = 200
index = 0
function (x) {
index = index + 1
if( x is between 200 and 202 ) return x + a[index]
else if(x is between 202 and 204) return x + b[index]
else if(x is between 204 and 206) return x + c[index]
else return x + d[index]
}
期待される結果は、このようなものになる可能性があります (もちろん、ランダム性のため、同じになることはありません。
[1] 200 201 202.3 203.8 204.1 205
興味のある方は、ここで答えを見つけることができます: 単純な再帰関係を関数型プログラムに変換する
モデレーターは、適切なクローズ方法を提案せずに、私が追加したものを削除し続けるため、この質問をクローズ済みとしてマークする方法を見つけることができないようです.