有一个像这样的data.frame:
df <- data.frame("Config" = c("C1","C1","C2","C2"), "SN1" = 1:4, "SN2" = 5:8)
我正在尝试使group_by %>% summarise
更通用。这是一个不起作用的示例:
variable <- "SN1"
df %>%
group_by(
Config
) %>%
summarise(
paste0(variable, ".median")=median(UQ(as.symbol(variable)))
) %>%
as.data.frame() ->
df_summary
由于paste0(variable, ".median")
部分而无法使用。
相关的问题解答Pass arguments to dplyr functions帮助我参数化了median(UQ(as.symbol(variable)))
部分,但没有提及左侧部分。
是否可以解决上述问题?
答案 0 :(得分:3)
您可以使用enquo
和!!
library(tidyverse)
mysumm <- function(variable){
var <- enquo(variable)
df %>%
group_by(
Config
) %>%
summarise(!!paste0(variable, ".median") := median(!!var))
}
mysumm('SN1')
# # A tibble: 2 x 2
# Config SN1.median
# <fct> <chr>
# 1 C1 SN1
# 2 C2 SN1