如何在另一个字符串向量中检测多个字符串

时间:2019-01-21 09:00:48

标签: r

我需要输出一个逻辑,指示哪些字符串匹配,哪些不匹配。

words<-c("happy","sad") 
all_words<-c("happy","tragic","sad","angry","mad","laugh","happy")

注意:有重复!

通过使用stringr程序包,我几乎可以达到我想要的结果,但不完全是这样。

> str_detect(all_words,fixed(words))
TRUE FALSE FALSE FALSE FALSE FALSE TRUE

几乎是正确的,除了第三个索引应显示为TRUE,因为all_words向量中出现了悲伤的词。

输出应如下所示:

 TRUE FALSE TRUE FALSE FALSE FALSE TRUE

2 个答案:

答案 0 :(得分:2)

您只需要:

all_words %in% words

来自help("%in%")

  

%in%是一个更直观的二进制运算符界面,它返回   一个逻辑向量,指示左边是否有匹配项   操作数。

基本上,对于第一个向量中的每个元素,它都会检查左手向量中是否存在匹配项。

答案 1 :(得分:1)

words<-c("happy","sad") 
all_words<-c("happy","tragic","sad","angry","mad","laugh","happy")

您需要的是:

all_words %in% words
[1]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE