试图找出如何遍历向量并消除包含超出预定限制的特定模式的组件。例如,在下面的向量中,我可能只想保留" a_a _"的前两个实例。和" b_b _"组件。
x = "a_a_a", "a_a_b", "b_b_a", "b_b_b"
在循环删除无关组件后,生成的向量将如下所示:
{{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"