J'ai une série des vecteurs suivants, chacun avec un emplacement unique de "0" entouré de NA:
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11
Existe-t-il un moyen de générer les éléments suivants pour chaque vecteur, c'est-à-dire un ligne numérique centrée à l'emplacement du 0, pour la longueur de chaque vecteur?:
NA NA NA NA NA 0 NA NA NA NA NA NA NA NA NA NA NA
Merci beaucoup pour vos conseils.
3 Réponses :
Vous pouvez utiliser:
x <- c(NA, NA, NA, NA, NA, 0 ,NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA) seq_along(x) - which(x == 0) #[1] -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11
Incroyable! Cela répond à ma question. Merci.
une autre solution
seq(- which(x == 0) + 1, length.out = length(x))
Une autre option
seq_along(x) - which.max(x)
Ou avec which.max
seq(length(x)) - which(!x)