Я хочу создать функцию на основе dplyr
, которая выполняет определенные операции над подмножествами данных. Подмножества определяются значениями одного или нескольких ключевых столбцов в наборе данных. Когда для идентификации подмножеств используется только один столбец, мой код работает нормально:
set.seed(1)
df <- tibble(
g1 = c(1, 1, 2, 2, 2),
g2 = c(1, 2, 1, 2, 1),
a = sample(5)
)
group_key <- "g1"
aggregate <- function(df, by) {
df %>% group_by(!!sym(by)) %>% summarize(a = mean(a))
}
aggregate(df, by = group_key)
Это работает как ожидалось и возвращает что-то вроде этого:
# A tibble: 2 x 2
g1 a
<dbl> <dbl>
1 1 1.5
2 2 4
К сожалению, все меняется, если я меняю group_key
:
group_key <- c("g1", "g2")
aggregate(df, by = group_key)
Я получаю сообщение об ошибке: Only strings can be converted to symbols
, которое, я думаю, происходит от rlang::sym()
. Замена на syms()
не работает, так как я получаю список имен, на которых group_by()
задыхается.
Любые предложения будут оценены!