[英]Can mutate_at name a variable according to a wrapped function name? (dplyr + rlang question)
我想創建一個函數,該函數用metric參數指定的特定指標來突變...中指定的所有變量。 我在函數中使用mutate_at,並希望它使用“ var.functionname”重命名該變量。 功能如下:
seasonAggregator <- function(.data, ..., metric = "sum") {
# all variables in ... will be accumulated
metric <- sym(metric)
name <- ensym(metric)
print(paste0("Metric for accumulation was: ", metric))
.data <- .data %>% mutate_at(vars(...), .funs = list(!!name := metric)) # HERE IS THE ISSUE
return(.data)
}
如何在metric參數中這樣指定函數,以使mutate_at使用函數名稱來重命名變量?
最好的莫里茲!
@Moody_Mudskipper是正確的。 您想使用支持擬引號的rlang::list2()
。 此外,你可能想summarize_at
,不mutate_at
,因為你通過累積sum
。
seasonAggregator <- function(.data, ..., metric = "sum") {
## all variables in ... will be accumulated
print(paste0("Metric for accumulation was: ", metric))
.data <- .data %>%
summarize_at(vars(...), .funs = rlang::list2(!!metric := sym(metric)))
return(.data)
}
seasonAggregator( mtcars, mpg, cyl )
# [1] "Metric for accumulation was: sum"
# mpg_sum cyl_sum
# 1 642.9 198
seasonAggregator( mtcars, mpg, cyl, metric="mean" )
# [1] "Metric for accumulation was: mean"
# mpg_mean cyl_mean
# 1 20.09062 6.1875
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.