在用户定义函数中使用特定列作为dplyr中的汇总函数
我有以下问题。我有一个数据集mtcars,我想写一个函数来总结给定的变量,例如mpg,因为另一个变量有一个特定的值,例如vs=1。我提供了一个代码,在这里我想总结一下给定vs=1的mpg,再总结一下给定am=1的mpg NextMethod(“[”)中出错:未找到对象“vs”在用户定义函数中使用特定列作为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
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