使用for循环的累积和方程

时间:2018-05-31 15:17:19

标签: r loops cumsum cumulative-sum

我对R没有很多经验,但我想把一个使用累计和的方程式放到R-studio中。该等式是一组离散时间方程的一部分,它们都是通过for循环建模的。 基本上,我想对此进行建模,但是以更简单的方式:

Zsec1 = g*(1+c/r+c)*Zprim1

Zsec2 = g*(1+c/r+c)*Zprim1 + g*(1+c/r+c)*Zprim2

Zsec3 = g*(1+c/r+c)*Zprim1 + g*(1+c/r+c)*Zprim2 + g*(1+c/r+c)*Zprim3 
..etc

根据我在网上找到的内容,我尝试使用这样的for循环:

for (t in Time) print(cumsum({gamma*((1+c4)/(r+c4))*Zprm[t]})) 

然而,cumsum代码没有做任何事情,因为当我拿出它时我得到相同的结果。

并且像这样:

total=0

for (t in Time) print({total <- total + (gamma*((1+c4)/(r+c4))*Zprm[t])})    

有没有人可以帮我解决这个问题?非常感谢你!

2 个答案:

答案 0 :(得分:1)

这基本上是第一条评论的答案。我只是发现在采集肿块之前更直观地隔离因素。

g*(1+c/r+c)*cumsum(Zprm[1:Time])[Time]

答案 1 :(得分:0)

你可以用这个:

Zprm<-rep(0,Time+1)
for (t in 1:Time){
  Zprm[t+1]=(gamma*((1+c4)/(r+c4))*sum(Zprm))
}