Это сработало для меня, хотя я не уверен, что он более эффективен, чем другие предложения.
rollForward <- function(x){
curr <- 0
for (i in 1:length(x)){
if (is.na(x[i])){
x[i] <- curr
}
else{
curr <- x[i]
}
}
return(x)
}