You are looking for cumprod
:
cumprod(rep(1.2, 5))
Like its better known friend, cumsum
, it accumulates past results, but it performs a multiplication rather than addition.
df <- data.frame(assumption_val=cumprod(rep(1.2, 5)),
years=2015:2019)
A nice generalization of these functions is Reduce
. For example, here is Reduce
performing this calculation. You can replace the "*" with "+" and have cumsum
.
Reduce("*", rep(1.2, 5), accumulate = T)
A nice feature of this method is that you can adjust the growth rate in each period. For instance if you wanted to start at 1.5 rather than 1.2, you would simply adjust your growth vector to c(1.5, rep(1.2, 4))
to calculate the new growth as follows:
cumprod(c(1.5, rep(1.2, 4)))
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…