R中的计数模式匹配

克里斯

一个人如何有效地计算一个字符串在另一字符串中出现的实例数?

以下是我到目前为止的代码。它成功识别一个字符串中的任何实例是否出现在另一字符串中。但是,我不知道如何将其从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]I中出现了两次,因此我想mmm[1,1]成为2而不是1。

真正的例子是更高的维度...如果可以对代码进行矢量化而不是使用我的蛮力进行循环,那将是很乐意的。

里卡多·萨波特塔

两个快速提示:

  1. 避免双重for循环,您不需要它;)
  2. 使用stringr包装

library(stringr)

dict <- setNames(nm=dict)  # simply for neatness
lapply(dict, str_count, string=lll)
# $chris
# [1] 2 1 0
#
# $hell
# [1] 1 0 0

或作为矩阵:

#  sapply(dict, str_count, string=lll)
#      chris hell
# [1,]     2    1
# [2,]     1    0
# [3,]     0    0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala列表中的计数模式

来自分类Dev

awk 计数模式匹配并对它们后面的数字求和

来自分类Dev

Python中的函数模式/谓词匹配

来自分类Dev

如何在Matlab中按列计数模式?

来自分类Dev

每行计数模式出现

来自分类Dev

R 中的模式匹配

来自分类Dev

使用grep计数模式实例

来自分类Dev

与R中的公式匹配的模式

来自分类Dev

按参数模式匹配并左联接

来自分类Dev

R中字符的匹配和计数

来自分类Dev

Scala匹配表达式中的构造函数模式和变量绑定模式有什么区别?

来自分类Dev

Scala匹配表达式中的构造函数模式和变量绑定模式有什么区别?

来自分类Dev

计数与Awk匹配的记录模式

来自分类Dev

Django计数模型中的实例

来自分类Dev

解析AIDE文件以计数模式之间的行

来自分类Dev

awk-在整个列中计数模式

来自分类Dev

模式与R中的文件名匹配

来自分类Dev

R中的模式匹配和替换

来自分类Dev

模式匹配以在R中创建新列

来自分类Dev

向量化模式匹配返回R中的模式

来自分类Dev

查找数组中的整数模式

来自分类Dev

从列表中查找整数模式

来自分类Dev

Clojure解构与类似Haskell的参数模式匹配

来自分类Dev

Clojure解构与类似Haskell的参数模式匹配

来自分类Dev

如何重构替换参数模式匹配的函数

来自分类Dev

JavaScript中的工厂模式与构造函数模式

来自分类Dev

在R中按组顺序匹配和计数值

来自分类Dev

如何通过r中的阈值对匹配组进行计数

来自分类Dev

模式匹配R