1
votes

R - Comment créer une droite numérique croissante / décroissante autour d'un élément spécifique dans un vecteur

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.


0 commentaires

3 Réponses :


5
votes

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


1 commentaires

Incroyable! Cela répond à ma question. Merci.



1
votes

une autre solution

seq(- which(x == 0) + 1, length.out = length(x))


0 commentaires

0
votes

Une autre option

seq_along(x) - which.max(x)

Ou avec which.max

seq(length(x)) - which(!x)


0 commentaires