R中句子中的部分匹配词

时间:2019-09-13 14:29:52

标签: r regex

当我在下面运行时,我希望使用R中的%in%运算符来部分匹配字符串

'I just want to partial match string' %in% 'partial'
 FALSE

在上述情况下,Expected Output为TRUE(因为部分匹配)

3 个答案:

答案 0 :(得分:2)

由于您希望部分匹配某个句子,因此应尝试使用data.table中的%like%,请在下面进行检查

library(data.table)
'I just want to partial match string' %like% 'partial'
 TRUE

输出为TRUE

答案 1 :(得分:1)

`%in_str%` <- function(pattern,s){
  grepl(pattern, s)
}

用法:

> 'a' %in_str% 'abc'
[1] TRUE

答案 2 :(得分:0)

您需要strsplit字符串,以便其中的每个单词都是向量中自己的元素:

"partial" %in% unlist(strsplit('I just want to partial match string'," "))
[1] TRUE

strsplit接收一个字符串,并将其分解为较短字符串的向量。在这种情况下,它在空格处打断(即末尾的" "),以便获得单个单词的向量。不幸的是,strstring默认将其结果保存为列表,这就是为什么我将其包装在unlist中的原因-因此我们得到一个向量。 然后,我们执行%in%,其作用与您使用的相反:您正在尝试确定字符串partial是否是%in%句子,而不是相反。 / p>

当然,这是一种令人讨厌的方法,因此,如果您希望保留在base-R或上述Priyanka的data.table解决方案中,最好使用基于grep的解决方案-两者都会在匹配多词字符串等方面也比较擅长。