在向量中分配值

Bog*_*dan 6 r function

我有一个有很多零的向量.

v <-(3,0,0,5,0,0,0,10,0,0,0,0)
Run Code Online (Sandbox Code Playgroud)

我想向前分发非零数字并用非零数字替换平均值之前的所有数字.

例如(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)
Run Code Online (Sandbox Code Playgroud)

有没有可以做到这一点的功能?

谢谢.

Ony*_*mbu 20

你正在寻找这个功能 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
Run Code Online (Sandbox Code Playgroud)