簡體   English   中英

函數中的filter參數默認使dplyr :: filter()不進行任何過濾

[英]Filter argument in function that defaults to make dplyr::filter() filter nothing

我正在構建一個導入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()

任何幫助表示贊賞,
謝謝

這個怎么樣?

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

FILTER()

也許:

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

FILTER()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM