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

Jinku Hu 14 luglio 2021
  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"
Autore: 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

Articolo correlato - R Regex