gpt4 book ai didi

r - 如何使用 NSE 并使用 ...(省略号)过滤表达式?

转载 作者:行者123 更新时间:2023-12-04 02:39:37 27 4
gpt4 key购买 nike

我如何利用魔术点 (...)/省略号根据任意列进行过滤?

df = tibble::tibble(col1 = c('a', 'b', 'c'), col2 = c(1,3,4))

my_func = function(x, ...){
df %>%
dplyr::filter(... == x)
}

my_func('a', col1)


# Should return:
# A tibble: 1 x 2
col1 col2
<chr> <dbl>
1 a 1

最佳答案

我们可以转换为 quosure (quo) 并求值 (!!)。在这里,我们假设只有一个列传递到 filter

my_func <- function(x, ...){
df %>%
dplyr::filter(!! quo(...) == x)
}



my_func('a', col1)
# A tibble: 1 x 2
# col1 col2
# <chr> <dbl>
#1 a 1

如果有多个列,那么使用filter_at可能会更好


如果我们可以作为参数传递而不是 ...

,那么使用 {{}} 可能会更好
my_func <- function(x, coln) {
df %>%
filter({{coln}} == x)
}
my_func('a', col1)

关于r - 如何使用 NSE 并使用 ...(省略号)过滤表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60012475/

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