Dopasuj wzór zliczania w R
Jak skutecznie policzyć liczbę wystąpień jednego ciągu znaków, które występują w innym ciągu znaków?
Poniżej jest mój dotychczasowy kod. Z powodzeniem identyfikuje, czy jakakolwiek instancja jednego ciągu występuje w drugim ciągu. Nie wiem jednak, jak rozszerzyć go z relacji PRAWDA / FAŁSZ na relację liczenia.
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
Daje:
[,1] [,2]
[1,] 1 1
[2,] 1 0
[3,] 0 0
Ponieważ małe litery „chris” pojawiają się dwa razy wlll[1]
chciałbymmmm[1,1]
mieć 2 zamiast 1.
Prawdziwym przykładem jest znacznie większy wymiar ... więc chciałbym, żeby kod był wektoryzowany, zamiast używać mojej brutalnej siły do pętli.