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

Jinku Hu 30 janvier 2023
  1. Utilisez les fonctions grep ou grepl pour rechercher des correspondances de motifs dans R
  2. Utilisez grepl pour faire correspondre n’importe quelle chaîne de caractères dans le vecteur de caractère 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 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"
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - R Regex