在用户定义函数中使用特定列作为dplyr中的汇总函数

在用户定义函数中使用特定列作为dplyr中的汇总函数,r,function,dplyr,summarize,R,Function,Dplyr,Summarize,我有以下问题。我有一个数据集mtcars,我想写一个函数来总结给定的变量,例如mpg,因为另一个变量有一个特定的值,例如vs=1。我提供了一个代码,在这里我想总结一下给定vs=1的mpg,再总结一下给定am=1的mpg NextMethod(“[”)中出错:未找到对象“vs” f_1您可以使用curly-curly({{..}}): 库(dplyr) f_1% 总结(p_1=平均值({var}}[vs==1],na.rm=TRUE), p_2=平均值({var}}[am==1],na.rm=TR

我有以下问题。我有一个数据集mtcars,我想写一个函数来总结给定的变量,例如mpg,因为另一个变量有一个特定的值,例如vs=1。我提供了一个代码,在这里我想总结一下给定vs=1的mpg,再总结一下给定am=1的mpg

NextMethod(“[”)中出错:未找到对象“vs”

f_1您可以使用curly-curly(
{{..}}
):

库(dplyr)
f_1%
总结(p_1=平均值({var}}[vs==1],na.rm=TRUE),
p_2=平均值({var}}[am==1],na.rm=TRUE))
}
f_1(数据=mtcars,var=mpg)
#p_1 p_2
#1 24.55714 24.39231
f_1 <- function(data, var){
  
  # Quote the variable that we can use it's name
  var         <- enquo(var)
  
  data %>%
    summarize(p_1          = mean(!!var[vs  == 1], na.rm = TRUE),
              p_2          = mean(!!var[am  == 1], na.rm = TRUE))
}


f_1(data = mtcars, var = mpg)
library(dplyr)

f_1 <- function(data, var){
  data %>%
    summarize(p_1 = mean({{var}}[vs  == 1], na.rm = TRUE),
              p_2 = mean({{var}}[am  == 1], na.rm = TRUE))
}

f_1(data = mtcars, var = mpg)

#      p_1      p_2
#1 24.55714 24.39231