解析R中函数调用中的变量

Resolve variable in function call in R

我想在用户定义的函数中调用 tidyr 的 gather()。代码如下所示:

load_and_prepare_data <- function(xls_file, metric_name) {
  xl <- read_excel(xls_file)
  xl <- gather(xl, key = "year", value = metric_name, 2:ncol(xl), convert = TRUE)
  return(xl)
}

问题是,变量 metric_name 没有解析,而是按字面解释为字符串:

data <- load_and_prepare_data("indicator_lung_cancer.xls", "cancer")

在此之后调用 names(data) 得到 [...] "year" "metric_name" 而不是 [...] "year" "cancer"

我需要更改什么才能将可变列名称传递给函数? R 行为的原因是什么?

Tidyr 使用类似 gather_ 的函数来帮助处理这些编程案例。 现在已弃用,阅读 here。 使用 !! 表示您想取消对输入的引用,以便对其进行评估。

load_and_prepare_data <- function(xls_file, metric_name) {
  xl <- read_excel(xls_file)  
  xl <- gather(xl, key = year, value = !!metric_name, 2:ncol(xl))
  return(xl)
}