如何高效地计算一个字符串中出现另一个字符串的次数?
以下是我目前的代码。它可以成功地识别一个字符串是否出现在另一个字符串中。但是,我不知道如何将其从一个TRUE/FALSE关系扩展到一个计数关系。
它的意思是:
自小写字符串“chris”在
以下是我目前的代码。它可以成功地识别一个字符串是否出现在另一个字符串中。但是,我不知道如何将其从一个TRUE/FALSE关系扩展到一个计数关系。
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
它的意思是:
[,1] [,2]
[1,] 1 1
[2,] 1 0
[3,] 0 0
自小写字符串“chris”在
lll [1] 中出现两次,我希望mmm [1,1]为2而不是1。
真实示例具有更高的维度...因此,如果代码可以向量化,而不是使用我的暴力循环,那就太好了。
microbenchmark
包。请注意,stringr
是语法糖,使处理字符串更容易。自己编码总是会更快。 - Ricardo Saporta效率 = 使用次数 * 代码运行时间 + 程序员时间
。计算机的时间相对较便宜。 - Tyler Rinker