Schneller Teilstringabgleich in R

Gegeben ein Vektor von Zeichenfolgentexts und ein Vektor von MusternpatternsIch möchte für jeden Text ein passendes Muster finden.

Für kleine Datensätze kann dies in R mit einfach gemacht werdengrepl:

patterns = c("some","pattern","a","horse")
texts = c("this is a text with some pattern", "this is another text with a pattern")

# for each x in patterns
lapply( patterns, function(x){
  # match all texts against pattern x
  res = grepl( x, texts, fixed=TRUE )
  print(res)
  # do something with the matches
  # ...
})

Diese Lösung ist korrekt, aber nicht skalierbar. Selbst bei mäßig größeren Datensätzen (~ 500 Texte und Muster) ist dieser Code peinlich langsam und löst auf einer modernen Maschine nur etwa 100 Fälle pro Sekunde - was lächerlich ist, wenn man bedenkt, dass es sich um einen groben String handelt, der teilweise ohne Regex (gesetzt mit) übereinstimmtfixed=TRUE). Sogar das machenlapply Parallel löst das Problem nicht. Gibt es eine Möglichkeit, diesen Code effizient neu zu schreiben?

Danke, Mulone

Antworten auf die Frage(2)

Ihre Antwort auf die Frage