Supposons que j'ai le vecteur suivant:Trouver plusieurs éléments dans un vecteur
> x <- sample(1:10,20,replace=TRUE)
> x
[1] 8 6 9 9 7 3 2 5 5 1 6 8 5 2 9 3 5 10 8 2
Comment puis-je trouver quels sont les éléments 8 ou 9?
Supposons que j'ai le vecteur suivant:Trouver plusieurs éléments dans un vecteur
> x <- sample(1:10,20,replace=TRUE)
> x
[1] 8 6 9 9 7 3 2 5 5 1 6 8 5 2 9 3 5 10 8 2
Comment puis-je trouver quels sont les éléments 8 ou 9?
C'est une façon de le faire. D'abord, je reçois les indices où x est 8 ou 9. Ensuite, nous pouvons vérifier que dans ces indices, x est en effet 8 et 9.
> inds <- which(x %in% c(8,9))
> inds
[1] 1 3 4 12 15 19
> x[inds]
[1] 8 9 9 8 9 8
Sinon, si vous n'avez pas besoin d'utiliser les indices mais juste les éléments que vous pouvez faire
> x <- sample(1:10,20,replace=TRUE)
> x
[1] 6 4 7 2 9 3 3 5 4 7 2 1 4 9 1 6 10 4 3 10
> x[8<=x & x<=9]
[1] 9 9
vous pouvez essayer l'opérateur |
pour les courts
which(x == 8 | x == 9)
grepl
peut-être une fonction utile. Notez que grepl
apparaît dans les versions de R 2.9.0 et versions ultérieures. Ce qui est pratique à propos de grepl
, c'est qu'il renvoie un vecteur logique de la même longueur que x
.
grepl(8, x)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
grepl(9, x)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[13] FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
Pour arriver à votre réponse, vous pouvez effectuer les opérations suivantes
grepl(8,x) | grepl(9,x)
J'aime aussi grepl, idéal pour filtrer des données sur des chaînes de texte, etc. Merci pour l'exemple OR - Je pensais que ce serait aussi simple , mais j'ai continué à essayer '||' qui est la mauvaise syntaxe. – atomicules
Ceci est une solution très dangereuse. 'grepl (9, c (9, 99, 654649))' retournera 'TRUE' pour tout ceci. On devrait être très prudent avec les correspondances exactes et regex. –
Mais si je cherche les indices spécifiques de deux valeurs sans leurs commandes triées. Comment aurais-je un résultat de "26, 1" au lieu de "1, 26" si je cherchais les index de Z et A dans l'alphabet? _which (lettres% en% c ('z', 'a')) _ – dasf