2017-08-24 147 views
1

我有一個包含通貨膨脹估計未來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]} 

我會用咕嚕咕嚕叫,但我卡在R2.14,其中有/非常/一點可用的tidyverse的。

回答

2

這不是太難的基礎R來完成:

cumprod(1 + inflation) 
[1] 1.027000 1.053702 1.076883 1.097344 1.305840 1.331956 
[7] 1.358596 1.385767 1.413483 1.441752 

cumprod,因爲你可能會從名稱猜測,是累積的​​產品。

測試是否相等。與Reduce

all.equal(cumprod(1+inflation), cumulative_inflation) 
[1] TRUE 
1

方式一:

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