Utilisez grepl pour rechercher des correspondances pour n'importe quelle chaîne de caractères dans le vecteur de caractère R
-
Utilisez les fonctions
grep
ougrepl
pour rechercher des correspondances de motifs dans R -
Utilisez
grepl
pour faire correspondre 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"
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