我需要将向量中的连续 NA 减少为单个 NA,而不触及其他值。
因此,例如,给定一个像这样的向量:
NA NA  8  7 NA NA NA NA NA  3  3 NA -1  4
我需要得到的是以下结果:
NA  8  7 NA  3  3 NA -1  4
目前,我正在使用以下功能:
reduceConsecutiveNA2One <- function(vect){
  enc <- rle(is.na(vect))
  # helper func
  tmpFun <- function(i){
    if(enc$values[i]){
      data.frame(L=c(enc$lengths[i]-1, 1), V=c(TRUE,FALSE))
    }else{
      data.frame(L=enc$lengths[i], V=enc$values[i])
    }
  }
  Df <- do.call(rbind.data.frame,lapply(1:length(enc$lengths),FUN=tmpFun))
  return(vect[rep.int(!Df$V,Df$L)])
}
它似乎工作正常,但可能有一种更简单/更快的方法来完成这项任务。
有什么建议么 ?
提前致谢。