类似于此问题:R: Cumulative return, what is the correct way?
但是有一种方法可以计算出总运行量吗?
也就是说,c(0.5, 0.3, -0.2)
的输入将返回
c(0.5, 0.95, 0.56)
我想我可以通过for循环/重叠应用来计算运行总计,但是还有一种更优雅的方法吗?
edit:修复输出中的错字。返回的计算方式如下:
first element = first element
second element = -1 + ((1 + 0.5) * (1 + 0.3)) = 0.95
third element = -1 + ((1 + 0.95) * (1 + -0.2)) = 0.56
答案 0 :(得分:2)
这里是accumulate
library(purrr)
accumulate(v1, ~ ((1 + .x) * (1 + .y)) - 1)
#[1] 0.50 0.95 0.56
或在base R
中与Reduce
Reduce(function(x, y) ((1 + x) * (1 + y)) - 1, v1, accumulate = TRUE)
#[1] 0.50 0.95 0.56
v1 <- c(0.5, 0.3, -0.2)
答案 1 :(得分:1)
另一种选择是使用cumprod
链接几何返回:
x <- c(0.5, 0.3, -0.2)
cumprod(1+x)-1
#[1] 0.50 0.95 0.56