获取 k 的任何元素与 R 中 x[i] 中的模式匹配的索引

Get the indices for which any element of k matches a pattern in x[i] in R

我正在寻找 R 代码,该代码将数据帧 a 的子集用于匹配另一个向量 k 中的模式的索引。

例如, 考虑

x <- c("a", "b", "c")
y <- 1:3
z <- c("foo", "bar", "null")
a <- data.frame(x, y, z)
a
#  x y    z
#1 a 1  foo
#2 b 2  bar
#3 c 3 null

假设我有一个要用于子集 a 的列表,其中 k 定义为

k <- c("b", "c")

如果我将 greplapplysapply 一起使用,我可以获得与 k 匹配的行,这正是我想要的。

a[as.logical(apply(sapply(k, grepl, a$x), 1, sum)),]

  x y    z
2 b 2  bar
3 c 3 null

但是,当扩展到大型数据集时,这段代码 真的 很慢。有没有更快更简单的方法来做到这一点?

谢谢,

拉斐尔

编辑:我尽力在 Stack Overflow 上找到这个问题的答案。由于找不到它,我可以保证此 post 中使用的措辞是独一无二的,因此是对论坛的贡献。

在 base R 中一个简单的方法是使用 %in%:

a[ a$x %in% k , ]