我正在尝试编写一个自定义函数,该函数将根据预定义变量向量(例如vector_heavy)中的值计算新变量,然后根据提供给函数的参数(例如custom_name)命名新变量。
这个变量命名是我的 quosure 技能让我失望的地方。任何帮助是极大的赞赏。
library(tidyverse)
vector_heavy <- quos(disp, wt, cyl)
cv_compute <- function(data, cv_name, cv_vector){
cv_name <- enquo(cv_name)
data %>%
rowwise() %>%
mutate(!!cv_name = mean(c(!!!cv_vector), na.rm = TRUE)) %>%
ungroup()
}
d <- cv_compute(mtcars, cv_name = custom_name, cv_vector = vector_heavy)
我的错误信息如下:
Error: unexpected '=' in:
" rowwise() %>%
mutate(!!cv_name ="
删除!!
before将导致一个函数计算一个字面上名为 的新变量cv_name
,并忽略I 作为参数包含的。mutate()
cv_name
custom_name
cv_compute <- function(data, cv_name, cv_vector){
cv_name <- enquo(cv_name)
data %>%
rowwise() %>%
mutate(cv_name = mean(c(!!!cv_vector), na.rm = TRUE)) %>%
ungroup()
}
我怎样才能让这个函数利用custom_name
我提供的作为参数cv_name
?