所以我试图在 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 函数中?