2015-06-17 72 views
-1

有没有一种方法来压缩这样的代码?在这种情况下,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)) 

任何帮助将不胜感激。期望的出来将是一个列向量。

+3

你应该提供A''和'B'在你的问题。 – nrussell

+0

@nrussel你是对的,这是一个提问的好方法。 –

+0

你的问题的主题很好,你只需要提供一个完全可重复的例子。 – nrussell

回答

3

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

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

假设你的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]剪掉初始A值。如果您真的需要,可以将它们包装在matrix()调用中。

相关问题