gpt4 book ai didi

r - 使用字符串作为输入使用 dplyr 编程

转载 作者:行者123 更新时间:2023-12-03 23:39:29 26 4
gpt4 key购买 nike

我想编写一个在内部使用 dplyr 的函数,并将变量名作为字符串提供。不幸的是 dplyr-s 对 NSE 的使用使它变得相当复杂。来自 Programming with dplyr我得到以下示例

my_summarise <- function(df, var) {
var <- enquo(var)

df %>%
group_by(!!var) %>%
summarise(a = mean(a))
}

my_summarise(df, g1)

但是,我想写函数 where 而不是 g1我可以提供 "g1"我无法理解如何做到这一点。

最佳答案

dplyr >= 1.0
使用双大括号和 cross 函数的组合:

my_summarise2 <- function(df, group_var) {
df %>% group_by(across({{ group_var }})) %>%
summarise(mpg = mean(mpg))
}

my_summarise2(mtcars, "cyl")

# A tibble: 3 x 2
# cyl mpg
# <dbl> <dbl>
# 1 4 26.7
# 2 6 19.7
# 3 8 15.1

# same result as above, passing cyl without quotes
my_summarise(mtcars, cyl)
dplyr < 1.0
据我所知,你可以使用 as.namesym (来自 rlang 包 - 我不知道 dplyr 最终是否会导入它):
library(dplyr)
my_summarise <- function(df, var) {
var <- rlang::sym(var)
df %>%
group_by(!!var) %>%
summarise(mpg = mean(mpg))
}
或者
my_summarise <- function(df, var) {
var <- as.name(var)
df %>%
group_by(!!var) %>%
summarise(mpg = mean(mpg))
}

my_summarise(mtcars, "cyl")
# # A tibble: 3 × 2
# cyl mpg
# <dbl> <dbl>
# 1 4 26.66364
# 2 6 19.74286
# 3 8 15.10000

关于r - 使用字符串作为输入使用 dplyr 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121728/

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