Аргумент фильтра в функции, который по умолчанию делает dplyr :: filter () ничего не фильтровать - PullRequest
0 голосов
/ 24 августа 2018

Я создаю функцию, которая импортирует таблицы Excel.

Я бы хотел, чтобы функция включала аргумент, содержащий имена переменных, которые пользователь хочет видеть.Значения из аргумента используются в dplyr :: filter () внутри функции.Я хотел бы, чтобы значение аргумента по умолчанию включало все (т.е. ничего не отфильтровывало).

Библиотеки и данные:

library(tidyverse)
data("iris")

Функция фильтра без каких-либо значений фильтра по умолчанию (это работает):

FILTER <- function(data = iris,
                   Filter_Values) {
  data %>%
    filter(Species %in% Filter_Values)
}
FILTER(Filter_Values = c("setosa", "virginica"))

Как написано выше, я хотел бы, чтобы аргумент Filter_Values ​​по умолчанию не фильтровал что-либо.
Это работает, но, конечно, не является общим:

FILTER <-
  function(data = iris,
           Filter_Values = c("setosa", "versicolor", "virginica")) {
    data %>%
      filter(Species %in% Filter_Values)
  }

FILTER()

Можете ли вы помочь мне найти общий термин, который может сделать то же самое.Я пытался (и потерпел неудачу) с:

 Filter_Values = TRUE  
 Filter_Values = c(TRUE)   
 Filter_Values = regex(".*")
 Filter_Values = everything()

Любая помощь приветствуется,
Спасибо

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Возможно:

FILTER <- function(data = iris,Filter_Values = NULL) {
    if (missing(Filter_Values)) data
    else data %>% filter(Species %in% Filter_Values)
}

FILTER()
0 голосов
/ 24 августа 2018

Как насчет этого?

FILTER <-
  function(data = iris,
           Filter_Values = unique(data$Species)) {
    data %>%
      filter(Species %in% Filter_Values)
  }

FILTER()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...