Ähnliches Problem hier: Ermitteln Sie anhand einer Zeichenkette und einer Liste von Schlüsselwörtern, ob und welche der Schlüsselwörter in der Zeichenkette enthalten sind.
Die Empfehlungen in diesem Thread lauten stringr
's str_detect
y grepl
. Hier sind die Benchmarks aus dem microbenchmark
Paket:
Verwendung von
map_keywords = c("once", "twice", "few")
t = "yes but only a few times"
mapper1 <- function (x) {
r = str_detect(x, map_keywords)
}
mapper2 <- function (x) {
r = sapply(map_keywords, function (k) grepl(k, x, fixed = T))
}
und dann
microbenchmark(mapper1(t), mapper2(t), times = 5000)
finden wir
Unit: microseconds
expr min lq mean median uq max neval
mapper1(t) 26.401 27.988 31.32951 28.8430 29.5225 2091.476 5000
mapper2(t) 19.289 20.767 24.94484 23.7725 24.6220 1011.837 5000
Wie Sie sehen können, wurden über 5.000 Iterationen der Stichwortsuche mit str_detect
y grepl
über eine praktische Zeichenfolge und einen Vektor von Schlüsselwörtern, grepl
schneidet um einiges besser ab als str_detect
.
Das Ergebnis ist der boolesche Vektor r
die angibt, ob und welche Schlüsselwörter in der Zeichenkette enthalten sind.
Ich empfehle daher die Verwendung von grepl
um festzustellen, ob Schlüsselwörter in einer Zeichenkette enthalten sind.