2009-07-23 11 views

Répondre

28

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 
+0

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

0

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 
6

vous pouvez essayer l'opérateur | pour les courts

which(x == 8 | x == 9) 
1

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) 
+0

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

+2

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. –