给定一个字符串向量
texts
和一个模式向量patterns
,我想找到每个文本的任何匹配模式。
对于小数据集,可以使用grepl
在R中轻松完成:patterns = c("some","pattern","a","horse")
texts = c("this is a text with some pattern", "this is another text with a pattern")
# for each x in patterns
lapply( patterns, function(x){
# match all texts against pattern x
res = grepl( x, texts, fixed=TRUE )
print(res)
# do something with the matches
# ...
})
这个解决方案是正确的,但无法扩展。即使在中等大小的数据集(约500个文本和模式)下,这段代码的速度非常慢,每秒只能解决大约100个案例,这在现代计算机上是可笑的,考虑到这只是一个简单的字符串局部匹配,没有正则表达式(使用fixed=TRUE
设置)。甚至将lapply
并行化也无法解决问题。
有没有一种有效的方式来重新编写这段代码呢?
谢谢, Mulone
patterns
中的每个元素是否出现在texts
的一个或多个元素中(还是需要知道它们出现在texts
的哪个/哪些元素中)? - jbaums