Étant donné un vecteur de valeurs binaires out_2
le code ci-dessous renvoie un vecteur de même longueur que out_2
appelé out_1
. Les entrées de out_1
comptent le nombre d'éléments similaires successifs dans out_2
avant le prochain changement de signe. Si vous imprimez la dernière cbind()
je pense que vous verrez ce que je veux dire.Incrémentation des valeurs vectorielles sous condition (redémarrage conditionnel de la somme cumulée) - Version vectorisée?
library(zoo)
n = 10
out_2 = rep(NA, n)
out_2[sample.int(n, 3)] = sample(c(-1, 1), 3, replace = TRUE)
out_2 = zoo::na.locf(out_2)
out_1 = out_2
out_1[length(out_2)] = 1
for(i in (length(out_2) - 1):1){
out_1[i] = ifelse(out_2[i + 1] == out_2[i], out_1[i + 1] + 1, 1)
}
cbind(out_1, out_2)
Je me demandais s'il y a un moyen vectorisé d'une doublure pour obtenir out_1
de out_2
(à savoir la vectorisation explicite de boucle)?