查找包含 R 中单词列表之一的文档
Find documents that include one of a list of words in R
我有两个数据框:msnbc
包含一列名为 text
的新闻抄本,dictionary
包含一列名为 search
的单词。我想要 return 一个包含 msnbc
的所有行的新数据框,其中 text
字段包含 search
列中的一个或多个单词。玩具数据:
msnbc <- data.frame(id=c(1,2,3), text=c("hello world", "goodbye world","hello friends"))
dictionary <- data.frame(search=c("hello","lorem","ipsum","dolor")
新数据集应包含 msnbc
的第一个和第三个元素,因为它们包含 dictionary$search
中的一个单词
我的第一个想法是使用 str_detect
,但没有将字符串向量作为模式传递的选项。我的另一个想法是以某种方式使用 filter
但不确定如何实现:
new_msnbc <- msnbc %>%
filter(dictionary$search %in% text)
但这并不像预期的那样有效。做这个的最好方式是什么? tidyverse
解决方案的奖励积分。
看来您可以使用 filter
和 grepl
:
result <- msnbc %>%
filter(grepl(paste(dictionary$search, collapse="|"), text))
我有两个数据框:msnbc
包含一列名为 text
的新闻抄本,dictionary
包含一列名为 search
的单词。我想要 return 一个包含 msnbc
的所有行的新数据框,其中 text
字段包含 search
列中的一个或多个单词。玩具数据:
msnbc <- data.frame(id=c(1,2,3), text=c("hello world", "goodbye world","hello friends"))
dictionary <- data.frame(search=c("hello","lorem","ipsum","dolor")
新数据集应包含 msnbc
的第一个和第三个元素,因为它们包含 dictionary$search
我的第一个想法是使用 str_detect
,但没有将字符串向量作为模式传递的选项。我的另一个想法是以某种方式使用 filter
但不确定如何实现:
new_msnbc <- msnbc %>%
filter(dictionary$search %in% text)
但这并不像预期的那样有效。做这个的最好方式是什么? tidyverse
解决方案的奖励积分。
看来您可以使用 filter
和 grepl
:
result <- msnbc %>%
filter(grepl(paste(dictionary$search, collapse="|"), text))