2015-06-17 107 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()調用中。

相關問題