Verwenden Sie grepl, um Übereinstimmungen für eine beliebige Zeichenkette im R-Zeichenvektor zu finden
-
Verwenden Sie die Funktionen
grep
odergrepl
, um nach Musterübereinstimmungen in R . zu suchen -
Verwenden Sie
grepl
, um beliebige Zeichenketten im R-Zeichenvektor abzugleichen
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"
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