r - R匹配字符串模式中矩阵运算的向量化
问题描述
我正在使用下面的代码创建一个矩阵,该矩阵比较一个向量中的所有字符串,以查看它们是否包含第二个向量中的任何模式:
strngs <- c("hello there", "welcome", "how are you")
pattern <- c("h", "e", "o")
M <- matrix(nrow = length(strngs), ncol = length(pattern))
for(i in 1:length(strngs)){
for(j in 1:length(pattern)){
M[i, j]<-str_count(strngs[i], pattern[j])
}
}
M
它工作得很好,并返回我正在寻找的矩阵:
[,1] [,2] [,3]
[1,] 2 3 1
[2,] 0 2 1
[3,] 1 1 2
但是,我的真实数据集非常庞大,这样的循环不能很好地扩展到具有 117、746、754 值的矩阵。有谁知道我可以将它矢量化或以其他方式加速它的方法?还是我应该只学习 C++?;)
谢谢!
解决方案
您可以按照@snoram 的建议使用outer
和。stri_count_fixed
outer(strngs, pattern, stringi::stri_count_fixed)
# [,1] [,2] [,3]
#[1,] 2 3 1
#[2,] 0 2 1
#[3,] 1 1 2
推荐阅读
- pytorch - data_block api :show_batch 导致 CUDA 未知错误
- apache-kafka - 如何在同一主题中创建多个 kafka 消费者组
- sql - SQL:我只想获取特定的列
- java - TimerTask 中 ArrayList 的 add() 导致所有元素都相同
- wordpress - 发送关于贝宝成功的电子邮件
- amazon-web-services - 如何在速度模板(AWS appsync + elasticsearch)中使用字符串替换?
- c# - 如何将匿名类型列表推送到已定义类型列表
- python - Python:为不存在的字段赋值
- java - 文件夹过长时读取文件
- python - 获取 SalesforceMalformedRequest:格式错误的请求错误