检查文本中的字符串(单词)列表(短语)

时间:2014-06-04 07:51:49

标签: r

除了循环之外,还有一种优雅的方法来测试是否在短语中找到属于列表的单词? 我正在思考类似apply函数之一的列表理解。 例如:

words <- c("word1", "word2", "word3")
text <- "This is a text made off of word1 and possibly word2 and so on."

如果任何单词是以文本形式建立的,那么输出应该返回TRUE。

2 个答案:

答案 0 :(得分:6)

grepl救援。

sapply(words, grepl, text)

# word1 word2 word3 
#  TRUE  TRUE FALSE

依次考虑words的每个元素,如果单词出现在TRUE中,则返回逻辑(text,如果没有,则返回FALSE。)< / p>

如果您想确保找到完全字样,那么您可以使用:

sapply(words, function(x) grepl(sprintf('\\b%s\\b', x), text))

当文字有word1但缺少TRUE时,这会阻止sword123返回word1。如果words具有多字元素,则可能没什么意义。

答案 1 :(得分:2)

查看包stringr。 我认为您需要使用的功能是str_detectstr_locate_all。这是在sapply中包含此功能。

  

库(stringr)

     

str_detect(text,words)

     

str_locate_all(text,words)

相关问题