【发布时间】:2018-08-24 09:50:32
【问题描述】:
我正在构建一个导入 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_if和filter_at可以提供帮助?你试过了吗? -
Filter_values = data$Species? -
您可以将
Filter_Values的默认值设置为NA,并在函数开头进行测试,将Filter_Values替换为过滤列的所有值。您可能还希望有一个参数来明确过滤列是哪一列(这里是species)。