Zählmusterabgleich in R

Wie kann man die Anzahl der Instanzen einer Zeichenkette, die in einer anderen Zeichenkette vorkommen, effizient zählen?

Unten ist mein Code bis heute. Es wird erfolgreich ermittelt, ob eine Instanz der einen Zeichenfolge in der anderen Zeichenfolge vorkommt. Ich weiß jedoch nicht, wie ich es von einer WAHR / FALSCH-Beziehung auf eine Zählbeziehung ausweiten soll.

x <- ("Hello my name is Christopher. Some people call me Chris")
y <- ("Chris is an interesting person to be around")
z <- ("Because he plays sports and likes statistics")

lll <- tolower(list(x,y,z))
dict <- tolower(c("Chris", "Hell"))

mmm <- matrix(nrow=length(lll), ncol=length(dict), NA)

for (i in 1:length(lll)) {
for (j in 1:length(dict)) {
    mmm[i,j] <- sum(grepl(dict[j],lll[i]))
}
}
mmm

Es ergibt:

       [,1] [,2]
 [1,]    1    1
 [2,]    1    0
 [3,]    0    0

Da die Kleinbuchstabenfolge "chris" zweimal in derlll[1] Ich würde gernmmm[1,1] 2 statt 1 sein.

Ein echtes Beispiel ist eine viel höhere Dimension. Würde mich freuen, wenn Code vektorisiert werden könnte, anstatt meine Brute Force für Schleifen zu verwenden.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage