Я пытаюсь написать функцию, которая корректирует группирующие переменные, чтобы исключить одну группировочную переменную.В функцию всегда передается групповой тибл.Первая часть функции выполняет некоторые вычисления на уровне группировки, который она предоставляет.Вторая часть выполняет дополнительные вычисления, но должна исключить единую переменную группировки, которая является динамической в моих данных.Использование mtcars в качестве примера набора данных:
library(tidyverse)
# x is a grouped tibble, my_col is the column to peel
my_function <- function(x, my_col){
my_col_enc <- enquo(my_col)
# Trying to grab the groups and then peel off the column
x_grp <- x %>% group_vars()
excluded <- x_grp[!is.element(x_grp, as.character(my_col_enc))]
# My calculations are two-tiered as described in the original description
# simplifying for example
x %>% group_by(excluded) %>% tally()
}
# This should be equivalent to mtcars %>% group_by(gear) %>% tally()
mtcars %>% group_by(cyl, gear) %>% my_function(cyl)
Когда я запускаю это, я получаю сообщение об ошибке: столбец «исключен» неизвестен.
Редактировать: Для любых будущих искателей с этой проблемой, если у вас есть символьный вектор (то есть несколько группирующих переменных), вам может понадобиться использовать символы с !!!чтобы добиться того, о чем просил мой оригинальный вопрос.