如何用户在 R 中定义过滤参数?

How to user define filtering parameters in R?

我需要一些关于用户定义函数或类似方法的帮助,让我定义过滤并重复使用它。我有一个 DF,我需要过滤成许多较小的 DF-s,我需要不时重用和更改一些过滤逻辑。我想定义过滤逻辑,以便我只能在一个地方更改它,然后将其应用于我必须使用它进行的所有过滤。

我想定义以下过滤条件:

注意!我知道以下不是定义函数的条件。这只是为了说明我需要什么。

Filter_A <- DF %>%
     filter(between(EMTAK, 200, 232) |
            between(EMTAK, 400, 450))

Filter_B <- DF %>%
     filter(between(EMTAK, 250, 260) |
            EMTAK == 500))

当我编写代码时,我想通过以下方式重新使用上述过滤:

New_DF <- DF %>%
     filter(EMTAK == Filter_A |
            EMTAK == Filter_B,
            SECTOR == "Metal" |
            SECTOR == "Plastic")

简而言之,我想定义过滤,然后将该过滤与其他过滤一起使用以获得我需要的 DF。

你能告诉我怎么做吗:)

谢谢,

在您的 DF 中定义过滤器变量并(重新)在过滤器中使用这些变量。

DF %>%
 mutate(
    filterA = between(EMTAK, 200, 232) |
            between(EMTAK, 400, 450),
    filterB = between(EMTAK, 250, 260) |
            EMTAK == 500)
 )

New_DF <- DF %>%
     filter(Filter_A |
            Filter_B,
            SECTOR == "Metal" |
            SECTOR == "Plastic")

或者为您的过滤器定义函数。请注意,调用函数时不需要 ==,因为函数已经 return 一个逻辑向量。

filterA <- function(x){
  between(x, 200, 232) |
    between(x, 400, 450)
}

filterB <- function(x){
  between(x, 250, 260) |
    x == 500)
}

New_DF <- DF %>%
     filter(filterA(EMTAK) |
              filterB(EMTAK),
            SECTOR == "Metal" |
            SECTOR == "Plastic")