grepl允许的任何字符串

时间:2019-05-30 14:15:30

标签: r grep grepl

我正在构建grepl命令,该命令由功能参数提供。如果不需要,我想跳过grep命令。我可以使用控制语句来做到这一点,但是我想传递一个返回所有字符串的值。

some_sub <- function(data, descr="*.*"){
     return(data %>% filter(grepl(descr, description)))
} 

我想进行以下工作:

some_sub(data, "Cabbage")
some_sub(data) # returns everything

数据在哪里

data <- structure(list(description = structure(c(1L, 1L, 2L, 1L), 
                                   .Label = c("Cabbage","Carrot"), 
                                   class = "factor"), 
           weight = c(12L, 9L, 7L, 15L)), 
      class = "data.frame", 
      row.names = c(NA,-4L))

1 个答案:

答案 0 :(得分:2)

一种选择是仅使用.(因为它是任何字符的元字符)作为descr参数的默认匹配项

又添加了一个参数colNm,以概括出更多的内容

如果有空格("")并希望与之匹配,最好将*作为空白

some_sub <- function(data, colNm, descr="."){
 colNm <- enquo(colNm)
 data %>%
      filter(grepl(descr, !!colNm))
} 

some_sub(iris, Species, "setosa")
some_sub(iris, Species)

使用OP'数据

some_sub(data, description, "Cabbage")
#  description weight
#1     Cabbage     12
#2     Cabbage      9
#3     Cabbage     15

some_sub(data, description)
#  description weight
#1     Cabbage     12
#2     Cabbage      9
#3      Carrot      7
#4     Cabbage     15