r - 在R中编写一个可以忽略特定过滤器参数的函数
问题描述
我想写一个有几个输入的函数。
每个输入都会调整 dplyr 管道中的特定过滤器参数。
我正在为如何打开/关闭 grep 参数而苦苦挣扎,
也就是说,我希望能够完全忽略 grep 行
我的数据框(df)具有三个变量(发送、重复、案例)
这是我的功能:
my_filter <- function(df, a, b, c){
df <<- df %>%
filter(sent != a,
repeat != b,
!grepl("_v", cases))
}
我希望“c”参数允许我忽略管道中的最后一行!grepl(“_v”,cases)
如何设置“c”以控制该行的存在/不存在?
解决方案
我建议这样的事情:
my_filter = function(df, a, b, c = TRUE) {
result = df %>% filter(
sent != a,
repeat_col != b
)
if(c) result = result %>% filter(!grepl("_v", cases, fixed = TRUE))
return(result)
}
这会按照您的要求处理条件。如果设置c
为FALSE
,则不会应用最后一个条件。(在其他情况下,您还可以测试if(missing(c))
以检查c
参数是否由用户提供。)
我也不使用全局赋值,因为你基本上不应该使用它,return
结果让用户选择结果名称,而不是为他们选择它并可能覆盖他们已经拥有的东西。
这fixed = TRUE
只是为了提高效率,因为您的模式是完全匹配的,而不是正则表达式。
推荐阅读
- ruby-on-rails - Rspec 测试 Sentry 的 Raven capture_exception
- java - Java如何从字母中验证希伯来文文本
- php - 谷歌地图api没有显示laravel 5.4
- javascript - 在一定时间内自动停止和启动动画?
- python - 将 numpy.ndarray 对象转换为 matplotlib.Axes 对象
- go - 意外同步。池分配
- vaadin - Vaadin 使用 PipedInputStream 和 PipedOutputStream 上传示例
- javascript - react native expo项目中如何从一个屏幕转到另一个屏幕?
- git - 如何与 master 保持同步并在分支中拥有旧的提交文件?
- python - Python netcdf - 每日数据所有时间段的月中位数