在Excel中,通過引用較早的單元格很容易對先前單元格執行計算。例如,從初始值100(步長= 0)開始,每個下一步都是0.9 * previous + 9
,只需從第一個單元格向下拖動公式欄(步驟= 1)即可。接下來的10個步驟看起來像:在初始值後使用之前的值對矢量執行操作
step value
[1,] 0 100.00000
[2,] 1 99.00000
[3,] 2 98.10000
[4,] 3 97.29000
[5,] 4 96.56100
[6,] 5 95.90490
[7,] 6 95.31441
[8,] 7 94.78297
[9,] 8 94.30467
[10,] 9 93.87420
[11,] 10 93.48678
我的網站和StackOverflow的,我可以拿出最好的是for
環路(下同)向四周看了看。有更有效的方法來做到這一點嗎?是否可以避免for
循環?似乎R中的大多數函數(如cumsum
,diff
,apply
等)都在現有向量上工作,而不是從先前的向量計算新值。
#for loop. This works
value <- 100 #Initial value
for(i in 2:11) {
current <- 0.9 * value[i-1] + 9
value <- append(value, current)
}
cbind(step = 0:10, value) #Prints the example output shown above
請勿使用'append'。將'value'預分配給最終大小並分配給它的元素。增長一個對象是你能做的最慢的操作之一。 – Roland