Use grepl para encontrar correspondências para qualquer string de caracteres no vetor de caracteres R

Jinku Hu 30 janeiro 2023
  1. Use as funções grep ou grepl para pesquisar correspondências de padrões em R
  2. Use grepl para corresponder a quaisquer strings de caracteres no vetor de caracteres R
Use grepl para encontrar correspondências para qualquer string de caracteres no vetor de caracteres R

Este artigo irá discutir vários métodos de uso de grepl para encontrar correspondências para qualquer string de caracteres no vetor de caracteres R.

Use as funções grep ou grepl para pesquisar correspondências de padrões em R

grep é usado para correspondência de padrões em um vetor de caracteres. Leva o argumento padrão como uma expressão regular que é correspondida pela função de acordo. grep retorna vetores de índices para elementos correspondidos por padrão, mas também pode retornar um vetor de caracteres de elementos correspondidos se o usuário atribuir TRUE ao parâmetro valor. Por outro lado, grepl retorna um vetor de valores booleanos indicando se o elemento correspondente corresponde ao padrão ou não. O exemplo a seguir demonstra as letras do alfabeto que correspondem a qualquer letra do alfabeto e obtemos o resultado de correspondência de todos os elementos conforme o esperado.

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

Use grepl para corresponder a quaisquer strings de caracteres no vetor de caracteres R

A função grepl pode corresponder a quaisquer permutações lógicas de strings fornecidas com o padrão correspondente. Observe que grepl não corresponde a letras maiúsculas diferentes por padrão. O fragmento de código a seguir mostra a primeira função que corresponde a cada string onde The é encontrado. Por outro lado, a próxima chamada para grepl corresponde a palavras contendo The ou 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

Como alternativa, podemos utilizar a função if...else para imprimir valores de string para cada elemento correspondente ou não correspondente no vetor de caracteres, conforme mostrado no exemplo de código a seguir. Observe que a segunda chamada usa correspondência com qualquer string contendo o caractere do intervalo 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

Artigo relacionado - R Regex