首页 > 解决方案 > 如果模式为 NULL,如何使用 grep 返回整个字符串?

问题描述

我目前正在构建一个 R Shiny 应用程序,并且必须在其中加入一些字符串搜索功能。如果我的搜索框为空,我希望返回原始数据框,如果搜索框已填充,则只需将数据框过滤到包含该字符串的所有行。

理想情况下,我想知道这是否可能而无需使用任何条件。我已经在基础 R 中重写了我的代码的基本示例,但NULL似乎是该grepl函数的无效模式参数。

search <- NULL
test <- iris %>% filter(is.null(search) | grepl(search,Species))

此代码何时按预期工作,search <- "s"但我想知道是否有办法在iris何时返回search <- NULL

标签: rgrepl

解决方案


您可以通过提供search默认模式""".*"代替NULL. 例如,这将返回 的预期子集iris

search <- "virginica"
filter(iris, grepl(search, Species))

这将返回整个数据框:

search <- ""
filter(iris, grepl(search, Species))

推荐阅读