【发布时间】:2015-09-03 20:43:12
【问题描述】:
寻找如何使用 grep 函数进行多个匹配。 这是我的数据:
trial<-c("k_d","k_ed","k_eda","b_ed","b_eda")
我想选择同时包含“k”和“ed”的案例。使用带有“&”的 grep 不起作用,使用“|”而不是“&”当然会给出这个结果:
grep("k|ed",trial)
[1] 1 2 3 4 5
有没有办法达到这样的结果?:
[1] 2 3
【问题讨论】:
-
你还有其他模式吗?
grep('k[^a-z]ed', trial)适用于此示例,或which(grepl('k', trial) & grepl('ed', trial)) -
或者
grep('(?=k).*ed.*', trial, perl = TRUE) -
或
grep(".*k.*ed.*|.*ed.*k.*", trial)? -
您的解决方案和@akrun 第二个解决方案完美运行。谢谢
-
这个有点神秘,但它也有效:
which(grepl("ed",trial)*grepl("k",trial)!=0)