我想在数据集中过滤一个> 200万行的列。如果该列中的任何行包含70个单词列表中的单词,则应该进行过滤。
我用过这个fruits$type[grepl(c("apple","orange","grapes"),fruits$type)]
但我得到如下错误:
参数'pattern'的长度为> 1,只有第一个元素 用过的 当我只使用一个单词进行过滤时它工作正常,但我有大约70个单词,因此很难单独写70行。
我尝试过提及here的建议,但没有成功。 有人可以帮帮我吗?
答案 0 :(得分:1)
如果有很多关键字,我们可以遍历单词grepl
和Reduce
以及|
获取单个逻辑向量来对数据集进行子集
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)