在函数中使用准引用并在 dplyr 中进行总结
using quasiquotation in a function with summarize in dplyr
我正在尝试编写一个函数,该函数可以将列名作为分配给变量的字符串,并像这样为它们生成汇总输出
my_function <- function(my_df, columnA,columnB){
summ_df <- my_df %>%
group_by(cyl) %>%
summarise(base_mean = mean(columnA),
contrast_mean = mean(columnB))
return(summ_df)
}
base = "drat"
cont = "wt"
my_function(mtcars,base,cont)
我想要的是上述函数 return 与
相同
mtcars %>%
group_by(cyl) %>%
summarise(base_mean = mean(drat),
contrast_mean = mean(wt))
我确定它是 enexpr 或 ensym 的某种组合,并且 !!但我不断得到 NA 值
将 ensym
与 !!
结合使用,这样它就可以接受未引用和引用的实际参数
my_function <- function(my_df, columnA,columnB){
my_df %>%
group_by(cyl) %>%
summarise(base_mean = mean(!! ensym(columnA)),
contrast_mean = mean(!! ensym(columnB)), .groups = 'drop' )
}
-测试
> my_function(mtcars, !!base, !!cont)
# A tibble: 3 × 3
cyl base_mean contrast_mean
<dbl> <dbl> <dbl>
1 4 4.07 2.29
2 6 3.59 3.12
3 8 3.23 4.00
我正在尝试编写一个函数,该函数可以将列名作为分配给变量的字符串,并像这样为它们生成汇总输出
my_function <- function(my_df, columnA,columnB){
summ_df <- my_df %>%
group_by(cyl) %>%
summarise(base_mean = mean(columnA),
contrast_mean = mean(columnB))
return(summ_df)
}
base = "drat"
cont = "wt"
my_function(mtcars,base,cont)
我想要的是上述函数 return 与
相同mtcars %>%
group_by(cyl) %>%
summarise(base_mean = mean(drat),
contrast_mean = mean(wt))
我确定它是 enexpr 或 ensym 的某种组合,并且 !!但我不断得到 NA 值
将 ensym
与 !!
结合使用,这样它就可以接受未引用和引用的实际参数
my_function <- function(my_df, columnA,columnB){
my_df %>%
group_by(cyl) %>%
summarise(base_mean = mean(!! ensym(columnA)),
contrast_mean = mean(!! ensym(columnB)), .groups = 'drop' )
}
-测试
> my_function(mtcars, !!base, !!cont)
# A tibble: 3 × 3
cyl base_mean contrast_mean
<dbl> <dbl> <dbl>
1 4 4.07 2.29
2 6 3.59 3.12
3 8 3.23 4.00