循环遍历R中的向量以删除包含超出特定限制的模式的对象

时间:2017-03-19 18:52:15

标签: r regex loops vector

试图找出如何遍历向量并消除包含超出预定限制的特定模式的组件。例如,在下面的向量中,我可能只想保留" a_a _"的前两个实例。和" b_b _"组件。

x = "a_a_a", "a_a_b", "b_b_a", "b_b_b"

在循环删除无关组件后,生成的向量将如下所示:

{{1}}

棘手的部分是代码必须首先检测模式中包含的内容,然后遍历(极长)向量以查找所有匹配的模式,并建立一种计算实例的方法,以便一旦达到给定的级别然后,它会删除所有匹配的组件。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用grep来识别哪些元素具有模式,并仅保留前两个元素。

patterns = c("a_a", "b_b")
keep = NULL
for(p in patterns) { keep = c(keep, grep(p,x)[1:2]) }
x = x[keep]
x
[1] "a_a_a" "a_a_b" "b_b_a" "b_b_b"