Я пытаюсь написать функцию, которая принимает метрику и вычисляет относительную разницу от первого значения этой метрики с помощью функций dplyr и нестандартной оценки. Следуя этим инструкциям (https://cran.r -project.org / web / packages / dplyr / vignettes / program.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, но я не очень хорошо понимаю все это и не смог найти работающего решения. Как я понимаю, мне как-то нужно получить ~ myVar. Можно ли это сделать?