我想做一个有条件的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
对于那些感兴趣的人,可以在这里找到答案: 将简单递归关系转换为函数式程序
我似乎找不到将这个问题标记为已关闭的方法,因为版主不断删除我添加的任何内容,而没有提出适当的关闭方法。