R filter by包含子串多个条件

时间:2015-03-30 16:21:33

标签: r

嘿,我有一个列表500K行,我需要按照必须包含某些子字符串的条件进行过滤(另一个包含20个子字符串的列表)。

我现在正在使用dplyr包,我的代码如下所示:

result <- data %>% 
          filter( grepl('sub1', column1) ||
                  grepl('sub2', column1) ||
                  grepl('sub3', column1) ||
                  grepl('sub4', column1) ||
                  ...
                  grepl('sub20', column1)) 

当第二个列表变得更长时,整个事情真的让我感到害怕,我想知道是否有一种简单(或更短?)的方式。

1 个答案:

答案 0 :(得分:1)

我们可以paste将模式字符串放在一起,collapse可以|

library(dplyr)
data %>% 
     filter(grepl(paste(paste0('sub', 1:20), collapse="|"), column1))