有没有办法压缩这段代码?

Is there a way to condense this code?

有没有办法像这样压缩代码?在这种情况下,B 只是一个列向量,而 A 只是一个标量值。我觉得好像 Q1 <- A*(1+B[1]) 行必须保持这样,然后其余代码可能会以更简洁的方式编写。

Q1 <- A*(1+B[1])

Q2 <- Q1*(1+B[2])

Q3  <- Q2*(1+B[3])

Q4 <- Q3*(1+B[4])

Q5 <- Q4*(1+B[5])

QCombo <- matrix(c(Q1,Q2,Q3,Q4,Q5))

如有任何帮助,我们将不胜感激。所需的结果将是一个列向量。

假设你的 A 和 B 看起来像这样

A <- 10
B <- 1:5

这看起来很好地使用了 Reduce 函数

Reduce(function(a,b) a*(1+b), B, init=A, accumulate=T)[-1]
# [1]   20   60  240 1200 7200

我们使用 [-1] 来 trim 关闭初始 A 值。如果确实需要,您可以将它们包装在 matrix() 调用中。

您可以尝试cumprod(使用@MrFlick 的示例)

A*cumprod(B+1)
#[1]   20   60  240 1200 7200