如何用户在 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 中定义过滤参数?的主要内容,如果未能解决你的问题,请参考以下文章