Я пытаюсь написать функцию, которая принимает метрику и вычисляет относительную разницу от первого значения этой метрики с функциями dplyr и нестандартной оценкой. Следуя этим инструкциям (https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html), я придумал, что работает хорошо:
testFun <- function(data, metric) {
metric <- enquo(metric)
metric_name <- quo_name(metric)
data %>%
mutate(!!metric_name := `-`(!!metric, first(!!metric)) / first(!!metric) *
100)
}
testFun(data.frame(x = c("a", "b", "c"), y = 1:3), y)
Однако проблема в том, что в другом месте кода у меня есть другие функции, которые принимают имя метрики как строку, хранящуюся в некоторой переменной, например:
myVar <- "y"
Я бы не хотел все менять, но все равно хотел бы использовать те же переменные. Итак, мой вопрос: могу ли я заставить ту же функцию работать с этим вызовом?
testFun(data.frame(x = c("a", "b", "c"), y = 1:3), myVar)
Либо изменив что-то в функции, либо как-то адаптируя ввод в вызове. Последнее было бы предпочтительнее. Я пробовал различные цитирование, отмену цитирования, оценку и т. Д. MyVar, но я не очень хорошо все это понимаю и не мог найти рабочего решения. Как я понимаю, мне как-то нужно получить ~ y от myVar. Это можно сделать?