【发布时间】:2018-11-05 07:45:44
【问题描述】:
所以我正在尝试在 dplyr 中进行一些编程,但我遇到了 enquo 和 !!评价。
基本上,我想将一列更改为动态列名,然后能够进一步操作该列(即汇总)。例如:
my_function <- function(data, column) {
quo_column <- enquo(column)
new_col <- paste0(quo_column, "_adjusted")[2]
data %>%
mutate(!!new_col := (!!quo_column) + 1)
}
my_function(iris, Petal.Length)
这很好用,并返回一个名为“Petal.Length.adjusted”的列,它只是 Petal.Length 增加了一个。
但是我似乎无法总结这个新专栏。
my_function <- function(data, column) {
quo_column <- enquo(column)
new_col <- paste0(quo_column, "_adjusted")[2]
mean_col <- paste0(quo_column, "_meanAdjusted")[2]
data %>%
mutate(!!new_col := (!!quo_column) + 1) %>%
group_by(Species) %>%
summarize(!!mean_col := mean(!!new_col))
}
my_function(iris, Petal.Length)
这会导致警告指出参数“Petal.Length_adjusted”不是数字或逻辑,尽管 mutate 调用的输出给出了一个数字列。
如何引用这个动态生成的列名以将其传递给进一步的 dplyr 函数?
【问题讨论】: