我正在寻找 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")
如果我使用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 上找到这个问题的答案。由于我找不到它,我可以保证这篇文章中使用的措辞是独一无二的,因此是对论坛的贡献。
最佳答案
基础 R 中的一个简单方法是使用 %in%
:
a[ a$x %in% k , ]
关于r - 获取 k 的任何元素与 R 中 x[i] 中的模式匹配的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45551734/