gpt4 book ai didi

r - 累积值 : for loop to Reduce

转载 作者:行者123 更新时间:2023-12-01 15:30:44 24 4
gpt4 key购买 nike

我有一个非常简单的 for 循环,用于添加可变利率复利。我试图以矢量化的方式来做这件事,也许使用 Reduce 这很有意义(我认为这不是真正的矢量化)。但尝试未能产生相同的结果:

principal <- 10000
rates <- c(0.03, 0.04, 0.05, 0.03, 0.04, 0.05)
balance <- rep(NA, length(rates) + 1)
balance[1] <- principal

for (i in seq_along(rates)){
balance[i + 1] <- balance[i] * (1 + rates[i])
}

## > balance
## [1] 10000.00 10300.00 10712.00 11247.60 11585.03 12048.43 12650.85

这是Reduce 尝试:

growth <- function(balance, rate) {
balance * (1 + rate)
}

Reduce(growth, principal, rates, accumulate = TRUE)

但这给出了:

## [[1]]
## [1] 0.03 0.04 0.05 0.03 0.04 0.05
##
## [[2]]
## [1] 300.03 400.04 500.05 300.03 400.04 500.05

这是预料之中的,因为我无法将向量提供给 Reduce 作为 rates。我想要的是 ReduceMap 之间的组合。或许 for 循环是这里最好的方法。但是有没有一种方法呢?

最佳答案

也许您的示例过于简单。这样就够了吗?

principal <- 10000
rates <- c(0, 0.03, 0.04, 0.05, 0.03, 0.04, 0.05)
principal*cumprod(1+rates)
## [1] 10000.00 10300.00 10712.00 11247.60 11585.03 12048.43 12650.85

关于r - 累积值 : for loop to Reduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com