Verwenden Sie grepl, um Übereinstimmungen für eine beliebige Zeichenkette im R-Zeichenvektor zu finden

Jinku Hu 30 Januar 2023
  1. Verwenden Sie die Funktionen grep oder grepl, um nach Musterübereinstimmungen in R . zu suchen
  2. Verwenden Sie grepl, um beliebige Zeichenketten im R-Zeichenvektor abzugleichen
Verwenden Sie grepl, um Übereinstimmungen für eine beliebige Zeichenkette im R-Zeichenvektor zu finden

In diesem Artikel werden verschiedene Methoden zur Verwendung von grepl beschrieben, um Übereinstimmungen für eine beliebige Zeichenkette im R-Zeichenvektor zu finden.

Verwenden Sie die Funktionen grep oder grepl, um nach Musterübereinstimmungen in R . zu suchen

grep wird für den Mustervergleich in einem Zeichenvektor verwendet. Es verwendet das Musterargument als regulären Ausdruck, der von der Funktion entsprechend abgeglichen wird. grep gibt standardmäßig Indexvektoren für übereinstimmende Elemente zurück, kann aber auch einen Zeichenvektor von übereinstimmenden Elementen zurückgeben, wenn der Benutzer dem ‘value’-Parameter ‘TRUE’ zuweist. Andererseits gibt grepl einen Vektor von booleschen Werten zurück, der anzeigt, ob das entsprechende Element dem Muster entspricht oder nicht. Das folgende Beispiel zeigt, wie die Buchstaben des Alphabets mit einem beliebigen Buchstaben übereinstimmen, und wir erhalten wie erwartet das Ergebnis der Übereinstimmung mit allen Elementen.

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

Verwenden Sie grepl, um beliebige Zeichenketten im R-Zeichenvektor abzugleichen

Die Funktion grepl kann beliebige logische Permutationen von Strings abgleichen, die mit dem entsprechenden Muster versehen sind. Beachten Sie, dass grepl standardmäßig nicht mit unterschiedlichen Groß-/Kleinschreibungen übereinstimmt. Der folgende Codeausschnitt zeigt die erste Funktion, die mit jeder Zeichenkette übereinstimmt, in der The gefunden wird. Andererseits findet der nächste Aufruf von grepl Wörter, die entweder The oder the enthalten.

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

Alternativ können wir die Funktion if...else verwenden, um Zeichenkettenwerte für jedes übereinstimmende oder nicht übereinstimmende Element im Zeichenvektor zu drucken, wie im folgenden Codebeispiel gezeigt. Beachten Sie, dass der zweite Aufruf eine Übereinstimmung mit einer beliebigen Zeichenkette verwendet, die das Zeichen aus dem Bereich e-h enthält.

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

Verwandter Artikel - R Regex