2017-09-08 57 views
4

我有一個有很多零的向量。在一個向量中分配值

v <-(3,0,0,5,0,0,0,10,0,0,0,0) 

我想向前分配非零數字,並將非零數字之前的所有數字替換爲平均值。

例如(3,0,0)應替換爲(1,1,1)。

(3 + 0 + 0)/ 3 = 1

v應該成爲

(1,1,1,1.25,1.25,1.25,1.25,2,2,2,2,2) 

是否有可以做到這一點的功能?

謝謝。

回答

13

您正在尋找的功能ave

ave(v,cumsum(v)) 
    [1] 1.00 1.00 1.00 1.25 1.25 1.25 1.25 2.00 2.00 2.00 2.00 2.00 
+0

偉大的答案!這正是我需要的! – Bogdan