R 函数中的可选筛选参数,用于筛选或不筛选数据
我想提出一个以过滤器为参数的函数。例如,使用R 函数中的可选筛选参数,用于筛选或不筛选数据,r,R,我想提出一个以过滤器为参数的函数。例如,使用mtcarsdataset作为示例。假设我只想通过选择mpg大于21来过滤数据集。下面是我的代码 mtcars_func<-function(df,mpg_filter=NULL){ filter<-df%>%transmute(filter_a=mpg>mpg_filter) df%>%filter(!!!unname(filter)) } outcome<-mtcars_func(mtcars,21)
mtcars
dataset作为示例。假设我只想通过选择mpg大于21来过滤数据集。下面是我的代码
mtcars_func<-function(df,mpg_filter=NULL){
filter<-df%>%transmute(filter_a=mpg>mpg_filter)
df%>%filter(!!!unname(filter))
}
outcome<-mtcars_func(mtcars,21)
mtcars\u函数(mpg\u过滤器)
df%>%过滤器(!!!未命名(过滤器))
}
结果=21。但是,如果我想选择不输入任何过滤器,只让这个函数输出未过滤的数据,该怎么办?如何修改此函数以实现此目的?我们可以让缺失
来检查mpg\u过滤器
mtcars_func<-function(df,mpg_filter=NULL){
if(missing(mpg_filter)) {
df
} else {
df%>%
filter(mpg > mpg_filter)
}
}
mtcars_func(mtcars,21)
mtcars_func(mtcars)
mtcars\u func%
过滤器(mpg>mpg\U过滤器)
}
}
mtcars_func(mtcars,21)
mtcars_func(mtcars)
使用默认值-Inf
mtcars_func<-function(df, mpg_filter = -Inf) {
filter(df, mpg > mpg_filter)
}
mtcars_func(mtcars,21)
mtcars_func(mtcars)
mtcars\u func mpg\u过滤器)
}
mtcars_func(mtcars,21)
mtcars_func(mtcars)
谢谢!为我工作,这很聪明!但似乎只适用于数字列,对吗?该函数已经硬编码到mpg_过滤器,因此在通用性方面没有损失。如果mpg被替换为字符列,则可以使用“”作为默认值。