我有一个载体,其中包含未来10年的通胀估计值:
inflation <- c(2.7/100,2.6/100,2.2/100,1.9/100,1.9/10,rep(2/100,5))
我想要N年通货膨胀的总乘数。所以第一年是i_0=1+2.7/100
,然后连续几年是前一年的1倍+那一年的通货膨胀。我可以用循环来做这个,但我正在尝试用R方式做事。
所以我拥有的是:
cumulative_inflation<- rep(1,10)
cumulative_inflation[1]<-1.027
for(i in 2:10){
cumulative_inflation[i]=(1+inflation[i])*cumulative_inflation[i-1]}
我会使用Purr,但是我坚持使用R2.14,它有/非常/很少的tidyverse可用。
答案 0 :(得分:2)
在基地R中完成并不难:
cumprod
正如您可能从名称中猜到的那样, all.equal(cumprod(1+inflation), cumulative_inflation)
[1] TRUE
是累积产品。
测试平等。
^M
答案 1 :(得分:1)
Reduce
的一种方式:
Reduce('*', inflation + 1, accumulate = TRUE)
#[1] 1.027000 1.053702 1.076883 1.097344 1.305840 1.331956 1.358596
# 1.385767 1.413483 1.441752