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

时间:2017-08-07 16:34:52

标签: r match apply sapply grepl

我正在寻找R代码,该代码为与另一个向量 k 中的模式匹配的索引子集数据框 a

例如, 考虑

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上找到这个问题的答案。由于我找不到它,我可以保证这篇文章中使用的措辞是独特的,因此对论坛有所贡献。

1 个答案:

答案 0 :(得分:4)

基础R的一个简单方法是使用%in%

a[ a$x %in% k , ]