当我在下面运行时,我希望使用R中的%in%运算符来部分匹配字符串
'I just want to partial match string' %in% 'partial'
FALSE
在上述情况下,Expected Output为TRUE(因为部分匹配)
答案 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的解决方案-两者都会在匹配多词字符串等方面也比较擅长。