na.locf e inverse.rle en Rcpp

Quería verificar si hay algún truco preexistente parana.locf (dezoo paquete),rle yinverse.rle enRCpp?

Escribí un bucle para implementar, p. Hice la implementación dena.locf(x, na.rm=FALSE, fromLast=FALSE) como sigue:

#include <Rcpp.h>
using namespace Rcpp;

//[[Rcpp::export]]
NumericVector naLocf(NumericVector x) {
  int n=x.size();
  for (int i=1;i<n;i++) {
    if (R_IsNA(x[i]) & !R_IsNA(x[i-1])) {
      x[i]=x[i-1];
    }
  }
  return x;
}

Me preguntaba si estas funciones son bastante básicas, es posible que alguien ya las haya implementado enRCpp de una mejor manera (puede ser evitar el bucle) O una forma más rápida?

Respuestas a la pregunta(1)

Su respuesta a la pregunta