当条目i可以取入条目i-1的值时避免循环

Ric*_*ron 1 loops r

我有大多数NA条目的向量.我想NA用前面的非NA入口替换每个向量.具体来说,第一个条目将始终为1,后面跟着一堆NAs,我想用1代替.i第一个条目可能是另一个数字,比方说2,然后是更多NAs,我想用2代替.等等.下面的循环实现了这一点,但必须有更多的R方式来做,对吧?我想用矢量化ifelse(),但我无法弄清楚如何用ith条目替换i-1th条目.

> vec <- rep(NA, 10)
> vec
 [1] NA NA NA NA NA NA NA NA NA NA
> vec[1] <- 1; vec[4] <- 2; vec[7] <- 3
> vec
 [1]  1 NA NA  2 NA NA  3 NA NA NA
> for (i in 1:length(vec)) if (is.na(vec[i])) vec[i] <- vec[i-1]
> vec
 [1] 1 1 1 2 2 2 3 3 3 3
Run Code Online (Sandbox Code Playgroud)

谢谢!

如果上下文有帮助,我正在调整WRDS数据库中的库存拆分,该数据库有一个列,显示拆分发生的时间和方式.

rcs*_*rcs 5

这已经在包zoo,功能na.locf(最后观察结转)中实现.另请参见此处:在向量中传播数据