Usa grepl per trovare corrispondenze per qualsiasi stringa di caratteri nel vettore di caratteri R

Lasha Khintibidze 14 luglio 2021 R R Regex
  1. Usa le funzioni grep o grepl per cercare pattern match in R
  2. Usa grepl per abbinare qualsiasi stringa di caratteri nel vettore di caratteri R
Usa grepl per trovare corrispondenze per qualsiasi stringa di caratteri nel vettore di caratteri R

Questo articolo discuterà diversi metodi di utilizzo di grepl per trovare corrispondenze per qualsiasi stringa di caratteri nel vettore di caratteri R.

Usa le funzioni grep o grepl per cercare pattern match in R

grep viene utilizzato per la corrispondenza del modello in un vettore di caratteri. Prende l’argomento del modello come un’espressione regolare che viene abbinata dalla funzione di conseguenza. grep restituisce i vettori degli indici per gli elementi corrispondenti per impostazione predefinita, ma può anche restituire un vettore di caratteri degli elementi corrispondenti se l’utente assegna TRUE al parametro value. D’altra parte, grepl restituisce un vettore di valori booleani che indica se l’elemento corrispondente corrisponde o meno al modello. L’esempio seguente mostra le lettere dell’alfabeto corrispondenti a qualsiasi lettera dell’alfabeto e otteniamo il risultato di corrispondenza di tutti gli elementi come previsto.

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

Usa grepl per abbinare qualsiasi stringa di caratteri nel vettore di caratteri R

La funzione grepl può corrispondere a qualsiasi permutazione logica di stringhe fornite con il modello corrispondente. Nota che grepl non corrisponde a lettere maiuscole diverse per impostazione predefinita. Il seguente frammento di codice mostra la prima funzione che corrisponde a ogni stringa in cui si trova The. D’altra parte, la chiamata successiva a grepl corrisponde a parole che contengono 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

In alternativa, possiamo utilizzare la funzione if...else per stampare valori di stringa per ogni elemento corrispondente o non corrispondente nel vettore di caratteri, come mostrato nel seguente esempio di codice. Si noti che la seconda chiamata utilizza la corrispondenza con qualsiasi stringa contenente il carattere dell’intervallo 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"

Articolo correlato - R Regex

  • Abbina caratteri di nuova riga in R Regex