编写一个可以忽略R中特定过滤器参数的函数
我想编写一个包含多个输入的函数。编写一个可以忽略R中特定过滤器参数的函数,r,function,dplyr,R,Function,Dplyr,我想编写一个包含多个输入的函数。 每个输入调整dplyr管道中的特定过滤器参数 我正在努力学习如何打开/关闭grep参数, 也就是说,我希望能够完全忽略grep行 我的数据帧(df)有三个变量(发送、重复、案例) 以下是我的功能: my_filter <- function(df, a, b, c){ df <<- df %>% filter(sent != a, repeat != b,
每个输入调整dplyr管道中的特定过滤器参数 我正在努力学习如何打开/关闭grep参数,
也就是说,我希望能够完全忽略grep行 我的数据帧(df)有三个变量(发送、重复、案例) 以下是我的功能:
my_filter <- function(df, a, b, c){
df <<- df %>%
filter(sent != a,
repeat != b,
!grepl("_v", cases))
}
my_filter我建议如下:
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(缺少(c))
以检查c
参数是否由用户提供。)
我也不使用全局赋值,因为您基本上不应该使用它,return
ing结果允许用户选择结果名称,而不是为他们选择结果名称,并可能覆盖他们已经拥有的内容
fixed=TRUE
只是为了提高效率,因为您的模式是精确匹配的,而不是正则表达式。我建议这样做:
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(缺少(c))
以检查c
参数是否由用户提供。)
我也不使用全局赋值,因为您基本上不应该使用它,return
ing结果允许用户选择结果名称,而不是为他们选择结果名称,并可能覆盖他们已经拥有的内容
fixed=TRUE
只是为了提高效率,因为您的模式是完全匹配的,而不是正则表达式。这里有另一个选项:
库(dplyr)
我的_过滤器%
过滤器(萼片宽度!=a,
萼片长度!=b,
c |!grepl(“v”,物种))
}
dim(虹膜%>%my_过滤器)
#> [1] 150 5
dim(虹膜%>%my_过滤器(c=假))
#> [1] 50 5
这里是另一个选项:
库(dplyr)
我的_过滤器%
过滤器(萼片宽度!=a,
萼片长度!=b,
c |!grepl(“v”,物种))
}
dim(虹膜%>%my_过滤器)
#> [1] 150 5
dim(虹膜%>%my_过滤器(c=假))
#> [1] 50 5
不要试图在单个过滤器()中执行此操作。
。相反,请将单个filter()
命令包装在if()
中,不要尝试在单个filter()中执行此操作。相反,将单个的filter()
命令包装在if()