首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用利率向量计算复合利息

用利率向量计算复合利息
EN

Stack Overflow用户
提问于 2018-05-29 21:46:58
回答 1查看 2.2K关注 0票数 3

我试着看看是否有一种方法来矢量化我所做的计算。我寻找这个答案,却找不到我需要的东西。

我有一个增长率向量。每一次都代表一个时期(就我的情况而言是一年)。我想把这个向量应用到一些本金上。然后,在将第一个增长率应用于主体之后,使用第一次迭代的结果并将第二个增长元素应用到新的值中。

下面是一些用于复制的代码(全部在base中):

代码语言:javascript
复制
# Vector of interest or inflation rates
RateVector <- c(0.02, 0.03, 0.04, 0.05, 0.06, 0.05, 0.04, 0.03, 0.02, 0.01) # forecasted rates
Principal <- data.frame(Principal = 1000000) # actual value of indicator in most recent period as data frame (list)

这是我试图矢量化的尝试:

代码语言:javascript
复制
sapply(Principal, "*", 1 + cumsum(RateVector))

这方面的问题是,sapply函数没有保存新的金额,而是将利率向量应用于相同的初始本金。这实际上是我从这段代码中所期望的。我不知道如何在每次迭代后从元素到元素保存新值。

这就是我如何使用循环解决问题的方法:

代码语言:javascript
复制
AmountVector <- Principal # initialize output vector

# Compound growth growth calculation loop
for(i in 1:length(RateVector)){
  Principal = Principal * (1 + RateVector)[i]
  AmountVector <- rbind(AmountVector,Principal)
}

# Print result
AmountVector
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 22:08:52

这是一个“累积产品”,所以?cumprod是您所需要的:

代码语言:javascript
复制
1000000 * cumprod(1 + RateVector)
# [1] 1020000 1050600 1092624 1147255 1216091 1276895 1327971 1367810 1395166
#[10] 1409118

cbind(AmountVector, newresult = 1000000 * c(1, cumprod(1 + RateVector)))
#   Principal newresult
#1    1000000   1000000
#2    1020000   1020000
#3    1050600   1050600
#4    1092624   1092624
#5    1147255   1147255
#6    1216091   1216091
#7    1276895   1276895
#8    1327971   1327971
#9    1367810   1367810
#10   1395166   1395166
#11   1409118   1409118
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50593439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档