gpt4 book ai didi

r - 可变过滤条件

转载 作者:行者123 更新时间:2023-12-04 09:38:55 25 4
gpt4 key购买 nike

我知道这个问题很可能是重复的。我试图用谷歌搜索这个问题,但找不到我要找的东西。

我想做的是根据用户指定的条件过滤数据集。例如:

df <- 
data.frame(type = c("a", "a", "b", "b"),
value = c(1,5,7,2), stringsAsFactors = F) %>%
as_tibble()

cond <- ">"
val <- 2
df %>% filter(value, cond, val)

(即与 df %>% filter(value>2) 相同)

如果可能,我将能够在函数内部和外部使用此设置。

编辑:

当我问我的问题时,我有点匆忙。我真正想要的是根据用户指定的条件改变,而不是过滤。 Ronak Shahs 的回答解决了 filter 问题,我只是对 mutate 问题做了一些小改动。我认为没有必要发布新问题,因为这两个问题密切相关。因此,我只是发布了关于 mutate 问题的答案(这也回答了 Tjebo 的评论)。

最佳答案

另一种方法是使用match.fun匹配要应用的函数并使用NSE将其应用到列。

library(dplyr)
library(rlang)

apply_fun <- function(df, col, fun, val) {
fun1 <- match.fun(fun)
df %>% filter(fun1({{col}}, val))
}

df %>% apply_fun(value, cond, val)

# type value
# <chr> <dbl>
#1 a 5
#2 b 7

df %>% apply_fun(value, cond, 1)
# A tibble: 3 x 2
# type value
# <chr> <dbl>
#1 a 5
#2 b 7
#3 b 2

关于r - 可变过滤条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58976611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com