我想写一个使用dplyr的函数,我提供变量名作为字符串.不幸的是,dplyr-s使用NSE使它变得相当复杂.从使用dplyr编程我得到以下示例
my_summarise <- function(df, var) {
var <- enquo(var)
df %>%
group_by(!!var) %>%
summarise(a = mean(a))
}
my_summarise(df, g1)
Run Code Online (Sandbox Code Playgroud)
但是,我想编写功能而不是g1我能提供的功能,"g1"而且我无法解决如何做到这一点.
luk*_*keA 16
Afaik,你可以使用as.name或sym(从rlang包中 - 我不知道如果dplyr最终会导入它):
library(dplyr)
my_summarise <- function(df, var) {
var <- rlang::sym(var)
df %>%
group_by(!!var) %>%
summarise(mpg = mean(mpg))
}
Run Code Online (Sandbox Code Playgroud)
要么
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
Run Code Online (Sandbox Code Playgroud)