给定一个字符串向量texts和一个模式向量patterns,我想找到每个文本的任何匹配模式.
对于小型数据集,可以在R中轻松完成grepl:
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
# ...
})
Run Code Online (Sandbox Code Playgroud)
此解决方案是正确的,但它不会扩展.即使使用适度更大的数据集(约500个文本和模式),这段代码也非常慢,在现代机器上每秒仅解决大约100个案例 - 考虑到这是一个粗略的字符串部分匹配,没有正则表达式(设置为fixed=TRUE),这是荒谬的.即使进行lapply并行也无法解决问题.有没有办法有效地重写这段代码?
谢谢,Mulone