计算R中匹配的多个模式的数量

时间:2018-02-11 15:07:35

标签: r regex string

我有一个像这样的字符串向量:

strings = c('abc||dhbsaf||fasdf||fasdf||dfs','abc||dhf||fa9df||fasaf||dfs')

我有这样的模式:

pattern = c('abc||dhbsaf||fasdf||fasdf||dfs','abc||dhf||fa9df||fasaf||32a')

我想计算匹配模式的数量。例如,对于与第一个字符串进行比较的第一个模式,将为下一个字符串提供5/5和4/5的结果。我不知道如何在R

中完成

1 个答案:

答案 0 :(得分:0)

我们可以在||上拆分字符串,然后在'模式'的相应元素上执行%in%。使用'字符串'

colSums(mapply(`%in%`, strsplit(pattern, '[|]+'), strsplit(strings, '[|]+')))
#[1] 5 4

或者另一种选择是根据'模式提取元素。并获得lengths

library(stringr)
lengths(str_extract_all(strings, gsub("\\|+", "|", pattern)))
#[1] 5 4