解析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)
}
我想在用户定义的函数中调用 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)
}