我正在寻找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")
如果我将grepl
与apply
和sapply
一起使用,我可以获得与 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上找到这个问题的答案。由于我找不到它,我可以保证这篇文章中使用的措辞是独特的,因此对论坛有所贡献。
答案 0 :(得分:4)
基础R的一个简单方法是使用%in%
:
a[ a$x %in% k , ]