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

Posted

技术标签:

【中文标题】如何用户在 R 中定义过滤参数?【英文标题】:How to user define filtering parameters in R? 【发布时间】:2022-01-19 12:43:47 【问题描述】:

我需要一些关于用户定义函数或类似方法的帮助,以便我定义过滤并重复使用它。我有一个 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。

你能告诉我怎么做吗:)

谢谢,

【问题讨论】:

【参考方案1】:

在您的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")

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

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")

【讨论】:

这对我很有用。我正在寻找第二个例子。首先也应该工作。再次感谢您,

以上是关于如何用户在 R 中定义过滤参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 管理自定义列中获取请求参数?

用户定义的表类型参数

如何将三个或多个参数传递给自定义模板标签过滤器 django?

如何在 SQLAlchemy 的过滤条件中传递模型参数

如何迭代地将参数传递给 R 函数

RMarkdown:如何将参数传递给在 R 中定义为变量的 bash 块?