我正在构建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))
答案 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