根据R中的单词列表过滤列

时间:2016-08-14 09:25:36

标签: r string filter dplyr

我想在数据集中过滤一个> 200万行的列。如果该列中的任何行包含70个单词列表中的单词,则应该进行过滤。

我用过这个fruits$type[grepl(c("apple","orange","grapes"),fruits$type)] 但我得到如下错误:

  

参数'pattern'的长度为> 1,只有第一个元素   用过的   当我只使用一个单词进行过滤时它工作正常,但我有大约70个单词,因此很难单独写70行。

我尝试过提及here的建议,但没有成功。 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

如果有很多关键字,我们可以遍历单词greplReduce以及|获取单个逻辑向量来对数据集进行子集

res <- fruits$type[Reduce(`|`, lapply(v1, grepl, x = fruits$type))]
length(res)
#[1] 11

数据

v1 <- c("apple", "orange", "grapes")
set.seed(24)
fruits <- data.frame(type = sample(c("apple", "orange", "grapes", 
    "banana", "water melon"), 20, replace=TRUE), val = rnorm(20), stringsAsFactors=FALSE)