r - 如果模式为 NULL,如何使用 grep 返回整个字符串?
问题描述
我目前正在构建一个 R Shiny 应用程序,并且必须在其中加入一些字符串搜索功能。如果我的搜索框为空,我希望返回原始数据框,如果搜索框已填充,则只需将数据框过滤到包含该字符串的所有行。
理想情况下,我想知道这是否可能而无需使用任何条件。我已经在基础 R 中重写了我的代码的基本示例,但NULL
似乎是该grepl
函数的无效模式参数。
search <- NULL
test <- iris %>% filter(is.null(search) | grepl(search,Species))
此代码何时按预期工作,search <- "s"
但我想知道是否有办法在iris
何时返回search <- NULL
?
解决方案
您可以通过提供search
默认模式""
或".*"
代替NULL
. 例如,这将返回 的预期子集iris
:
search <- "virginica"
filter(iris, grepl(search, Species))
这将返回整个数据框:
search <- ""
filter(iris, grepl(search, Species))
推荐阅读
- python - Jupyter Notebook 中的内存错误
- c# - 在调试器中正确显示 List 的子类
- javascript - ajax 请求在 axios 中没有通过
- c++ - 说编译器可以将下面的表达式 `a->i` 替换为其值 1 是否正确,因为...?
- angular - Sharepoint:具有和条件的多个细化过滤器(使用 Angular4 的 rest API)
- postgresql - 使用 Postgres 发布到 Spring/Hibernate 后端
- angular - 角度/材料 6 菜单仅在左上角打开
- python - 检查这是不是 csv 文件中的 url
- angular - Angular 5 Ngrx 状态在浏览器页面刷新期间丢失
- css - SVG 将相同的变换原点应用于组/符号的所有子项