他の値に触れずに、ベクトル内の連続する 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)])
}
正常に動作しているように見えますが、おそらくこのタスクを達成するためのより簡単で高速な方法があります。
助言がありますか ?
前もって感謝します。