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被替换为字符列,则可以使用“”作为默认值。