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

标签 r match apply sapply grepl

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

最佳答案

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

a[ a$x %in% k , ]

关于r - 获取 k 的任何元素与 R 中 x[i] 中的模式匹配的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45551734/

相关文章:

r - 在检查 data.frame 中的列类时 apply() 不起作用

r - Caret Package with "nnet"查看隐藏层的权重

r - 在 R 中将自由之家索引转换为整洁的格式

python - 如何获取区间之外的值 pandas DataFrame

elasticsearch - Elastic Multimatch Query与文档不匹配

python - 将变量与 Python 中的列表成员匹配?

r - 寻找连续 3 个最冷的月份

r - 如何在 dplyr 的过滤器中正确使用 all?

r - 分组是否在data.table 1.12.0中并行化?

python - 提取不同表中2列之间的常用词python