Use grepl para encontrar coincidencias para cualquier cadena de caracteres en el vector de caracteres R

Jinku Hu 14 julio 2021
  1. Utilice las funciones grep o grepl para buscar coincidencias de patrones en R
  2. Utilice grepl para hacer coincidir cualquier cadena de caracteres en el vector de caracteres R
Use grepl para encontrar coincidencias para cualquier cadena de caracteres en el vector de caracteres R

Este artículo discutirá varios métodos de uso de grepl para encontrar coincidencias para cualquier cadena de caracteres en el vector de caracteres R.

Utilice las funciones grep o grepl para buscar coincidencias de patrones en R

grep se utiliza para la coincidencia de patrones en un vector de caracteres. Toma el argumento de patrón como una expresión regular que se corresponde con la función en consecuencia. grep devuelve vectores de índices para elementos coincidentes de forma predeterminada, pero también puede devolver un vector de caracteres de elementos coincidentes si el usuario asigna TRUE al parámetro value. Por otro lado, grepl devuelve un vector de valores booleanos que indica si el elemento correspondiente coincide con el patrón o no. El siguiente ejemplo demuestra las letras del alfabeto que coinciden con cualquier letra del alfabeto, y obtenemos el resultado de coincidencia de todos los elementos como se esperaba.

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

Utilice grepl para hacer coincidir cualquier cadena de caracteres en el vector de caracteres R

La función grepl puede coincidir con cualquier permutaciones lógicas de cadenas provistas con el patrón correspondiente. Tenga en cuenta que grepl no coincide con letras mayúsculas diferentes de forma predeterminada. El siguiente fragmento de código muestra la primera función que coincide con cada cadena donde se encuentra The. Por otro lado, la siguiente llamada a grepl coincide con palabras que contienen The o 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

Alternativamente, podemos utilizar la función if...else para imprimir valores de cadena para cada elemento coincidente o no coincidente en el vector de caracteres, como se muestra en el siguiente ejemplo de código. Observe que la segunda llamada usa la coincidencia con cualquier cadena que contenga el carácter del rango 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"
Autor: 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

Artículo relacionado - R Regex