Необязательный параметр фильтра в функции, чтобы фильтровать или не фильтровать данные - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь придумать функцию, которая принимает фильтр в качестве параметра. Например, используя mtcars набор данных в качестве примера. Предположим, я просто хочу отфильтровать набор данных, выбрав только 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)

Таким образом я получаю то, что хочу, то есть строки, которые соответствуют только моим условие mpg> = 21. Тем не менее, что, если я хочу иметь возможность не вводить данные в какой-либо фильтр и просто использовать эту функцию для удаления нефильтрованных данных? Как бы я изменил эту функцию для достижения этого?

Ответы [ 2 ]

1 голос
/ 17 января 2020

Использовать по умолчанию -Inf

mtcars_func<-function(df, mpg_filter = -Inf) {
  filter(df, mpg > mpg_filter)
}

mtcars_func(mtcars,21)
mtcars_func(mtcars)
1 голос
/ 17 января 2020

У нас может быть missing для проверки mpg_filter

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...