你好,在阅读 dplyr 编程 中,我注意到可以使用 quo_name 添加名称。我想知道如何为多个列实现这样的操作,例如类似于 quos_name。例如:
my_mutate <- function(df, expr) {
expr <- enquo(expr)
mean_name <- paste0("mean_", quo_name(expr))
sum_name <- paste0("sum_", quo_name(expr))
mutate(df,
!!mean_name := mean(!!expr),
!!sum_name := sum(!!expr)
)
}
变得
my_mutate <- function(df, ...) {
exprs <-quos(...)
mean_names <- paste0("mean_", quos_name(exprs))
sum_names <- paste0("sum_", quos_name(exprs))
mutate(df,
!!!mean_names := mean(!!!exprs),
!!!sum_names := sum(!!!exprs)
)
}
例如,在所有指定的列中添加平均值和总和列... 当然,这只是一个例子,quo_names不存在。如果有一种方法可以做到这一点,那将非常有帮助。
我知道在data.table中可以做到这样的事情,例如DT[,(Col_names):=lapply(Cols,mean)]
(此代码不起作用,但我以前做过类似的事情)。
mutate_at
怎么样?函数名称将作为后缀添加,而不是前缀,但其余部分将完成相同的工作。 - aosmithmap
操作,例如quos(a,b) %>% purrr::map(~my_mutate(df, !!.x))
。 - shayaa