【发布时间】:2023-04-03 23:11:01
【问题描述】:
我使用 grepl 来检查字符串是否包含一组模式中的任何模式(我使用 '|' 分隔模式)。反向搜索没有帮助。如何识别匹配的模式集?
附加信息:这可以通过编写一个循环来解决,但它非常耗时,因为我的集合有 > 100,000 个字符串。可以优化吗?
例如:设字符串为a <- "Hello"
pattern <- c("ll", "lo", "hl")
pattern1 <- paste(pattern, collapse="|") # "ll|lo|hl"
grepl(a, pattern=pattern1) # returns TRUE
grepl(pattern, pattern=a) # returns FALSE 'n' times - n is 3 here
【问题讨论】:
-
如果我能获得每个元素的所有匹配项,那就太好了。目前我正在迭代所有元素('a')
-
嗯,我不知道在这种情况下是否有创建矩阵的函数,我需要阅读文档,确实很有趣!
-
您的答案比蛮力优化得多。比较:所用时间间隔为 15 分钟。蛮力:346 次迭代 str_detect:87000+ 次迭代