舉一個簡單的例子,我需要創建下表中的R列的遞推更新(這是我想要的結果):data.table
library(data.table)
DT <- data.table(A= c(2,5,4,-2,4),
B= c(1000,1100,1375,1650,1485),
C= c(50,55,68.75,82.5,74.25),
D= c(100,275,275,-165,297))
DT
這是我的嘗試,到目前爲止這是不工作:
DT.2 <- data.table(A= c(2,5,4,-2,4))
DT.2[, B := 1000 ] # B should begin at 1000, then cumulatively add column D
DT.2[, C := B * 0.05 ]
DT.2[, D := A * C ]
DT.2[, B := 1000 + cumsum(shift(D, type= "lag", fill=FALSE)) ]
DT.2
正如您所看到的,列不會正確更新,因爲每列都依賴於其他列的結果。在Excel中這是一個非常簡單的計算,我只需要了解如何使其適應R. 謝謝
這是奇怪的遞歸 - 你初始化'B'爲'1000'。那麼'C'依賴於'B','D'依賴於'C',並且'B'被重新定義爲依賴於'D'。似乎通告。 – Gregor
你能解釋一下如何獲得你想要的結果(即應用了什麼變換)? – fishtank
我在Excel中創建了這個例子。 B列從1000開始,然後依靠其他列的結果。我可以想象它需要一個循環函數或應用系列,但是我無法做到這一點。 – user3740289