在 dplyr 中使用用户定义函数中的特定列来汇总函数
Use a specific column inside the user defined function for summarize function in dplyr
我有以下问题。我有一个数据集 mtcars 我想写一个函数来总结给定的变量,例如mpg 假定另一个变量具有特定值,例如对=1。我提供了一个代码,我想在其中总结 mpg 给定 vs = 1 并再次总结给定 am = 1.
Error in NextMethod("[") : object 'vs' not found
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
我有以下问题。我有一个数据集 mtcars 我想写一个函数来总结给定的变量,例如mpg 假定另一个变量具有特定值,例如对=1。我提供了一个代码,我想在其中总结 mpg 给定 vs = 1 并再次总结给定 am = 1.
Error in NextMethod("[") : object 'vs' not found
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