考虑以下向量x:
> 1:9
[1] 1 2 3 4 5 6 7 8 9
并考虑以下输入:
start = 10
pmt = 2
res
这是我想要实现的结果(我们称之为结果向量)(显示的是实际公式)。请注意,结果是向量而不是数据框。我只是在这里显示了 2 个维度。
换句话说,要获得res,您需要start
乘以每个单元格的累积乘积,df
直到对应的单元格。
当向量索引为 4 或 7 的倍数时,更新起始值。
这是我尝试过的:
for(i in 1:9) {
res[i] = start * cumprod(df[k:i])[i]
if(i %% 3 == 0) {
start = res[i] - pmt
k = k + 3
} else {
start = res[i]
}
}
}
把这个问题放在上下文中,假设你有 10 美元的初始价值,你想在 9 个月内投资它。但是,您想在每 3 个月末提款(即在第 4 个月、第 7 个月的月初,...)。向量x代表回报的随机值。因此,在第 4 个月的开始,您的起始值start*1*2*3
减去提款pmt
。
这里的目的是计算第 9 个月末的财富值。
问题是,实际上 i = 200(200 个月),我需要为 10,000 个不同的向量x重做这个计算。因此,在上述代码上循环 10,000 次需要永远执行!
您对如何更有效地计算这个有什么建议吗?我希望解释不会太混乱!
谢谢!