【发布时间】:2018-10-27 20:15:19
【问题描述】:
我正在尝试编写一个函数,该函数采用一个指标并使用 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 的各种引用、取消引用、评估等,但我并不太了解所有这些,也无法提出可行的解决方案。按照我的理解,我需要从 myVar 中获取 ~y。可以吗?
【问题讨论】: