HOWTO · R

Utilisez grepl pour rechercher des correspondances pour n'importe quelle chaîne de caractères dans le vecteur de caractère R

Cet article montre comment utiliser les correspondances de recherche grepl pour n'importe quelle chaîne de caractères dans le vecteur de caractère R.

Sur cette page

Cet article discutera de plusieurs méthodes d’utilisation de grepl pour trouver des correspondances pour n’importe quelle chaîne de caractères dans le vecteur de caractères R.

Utilisez les fonctions grep ou grepl pour rechercher des correspondances de motifs dans R

grep est utilisé pour la correspondance de motifs dans un vecteur de caractères. Il prend l’argument pattern comme une expression régulière qui est mise en correspondance par la fonction en conséquence. grep renvoie des vecteurs d’indices pour les éléments appariés par défaut, mais il peut également renvoyer un vecteur de caractères d’éléments appariés si l’utilisateur affecte TRUE au paramètre value. D’autre part, grepl renvoie un vecteur de valeurs booléennes indiquant si l’élément correspondant correspond ou non au motif. L’exemple suivant montre les lettres de l’alphabet correspondant à n’importe quelle lettre de l’alphabet, et nous obtenons le résultat de la correspondance de tous les éléments comme prévu.

grep("[a-z]", letters)
grep("[a-z]", letters, value = TRUE)
grepl("[a-z]", letters)
> grep("[a-z]", letters)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

> grep("[a-z]", letters, value = TRUE)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v"
[23] "w" "x" "y" "z"

> grepl("[a-z]", letters)
 [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[18] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Utilisez grepl pour faire correspondre n’importe quelle chaîne de caractères dans le vecteur de caractère R

La fonction grepl peut correspondre à toutes les permutations logiques de chaînes fournies avec le motif correspondant. Notez que grepl ne correspond pas par défaut à des lettres majuscules différentes. L’extrait de code suivant montre la première fonction qui correspond à chaque chaîne où The se trouve. En revanche, l’appel suivant à grepl correspond aux mots contenant soit The soit the.

words <- c("The", "licenses", "for", "most", "software", "are",
         "to", "share", "and", "change", "it.",
         "", "By", "contrast,", "the", "GNU", "General", "Public", "License",
         "free", "for", "all", "its", "users")

i <- grepl("The", words)
i
i <- grepl("The|the", words)
i
[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[15] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[15]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

Alternativement, nous pouvons utiliser la fonction if...else pour imprimer des valeurs de chaîne pour chaque élément correspondant ou non dans le vecteur de caractères, comme indiqué dans l’exemple de code suivant. Notez que le deuxième appel utilise la correspondance avec n’importe quelle chaîne contenant le caractère de la plage e-h.

words <- c("The", "Them", "for", "most", "software", "are",
         "to", "share", "and", "change", "it.",
         "", "By", "contrast,", "the", "GNU", "General", "Public", "License",
         "free", "for", "all", "its", "users")

i <- ifelse(grepl("The|the", words), "Tr", "Fa")
i <- ifelse(grepl("[e-h]", words), "Tr", "Fa")
i
[1] "Tr" "Tr" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Tr" "Fa" "Fa"
[18] "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa"

[1] "Tr" "Tr" "Tr" "Fa" "Tr" "Tr" "Fa" "Tr" "Fa" "Tr" "Fa" "Fa" "Fa" "Fa" "Tr" "Fa" "Tr"
[18] "Fa" "Tr" "Tr" "Tr" "Fa" "Fa" "Tr"