Agrupando todas as combinações possíveis de várias variáveis com o dplyr

Dada uma situação como a seguinte

library(dplyr)
myData <- tbl_df(data.frame( var1 = rnorm(100), 
                             var2 = letters[1:3] %>%
                                    sample(100, replace = TRUE) %>%
                                    factor(), 
                             var3 = LETTERS[1:3] %>%
                                    sample(100, replace = TRUE) %>%
                                    factor(), 
                             var4 = month.abb[1:3] %>%
                                    sample(100, replace = TRUE) %>%
                                    factor()))

Gostaria de agrupar `myData 'para, eventualmente, encontrar o agrupamento de dados resumidos por todas as combinações possíveis de var2, var3 e var4.

Eu posso criar uma lista com todas as combinações possíveis de variáveis como valores de caracteres com

groupNames <- names(myData)[2:4]

myGroups <- Map(combn, 
              list(groupNames), 
              seq_along(groupNames),
              simplify = FALSE) %>%
              unlist(recursive = FALSE)

Meu plano era criar conjuntos de dados separados para cada combinação de variáveis com um loop for (), algo como

### This Does Not Work
for (i in 1:length(myGroups)){
     assign( myGroups[i]%>%
             unlist() %>%
             paste0(collapse = "")%>%
             paste0("Data"), 
               myData %>% 
               group_by_(lapply(myGroups[[i]], as.symbol)) %>%
               summarise( n = length(var1), 
                             avgVar2 = var2 %>%
                                       mean()))
}

É certo que não sou muito bom com listas, e pesquisar esse problema foi um pouco desafiador, pois as atualizações do dpyr alteraram um pouco o modo como o agrupamento funciona.

Se existe uma maneira melhor de fazer isso do que conjuntos de dados separados, eu gostaria de saber.

Eu recebi um loop semelhante ao trabalho acima quando estou apenas agrupando por uma única variável.

Toda e qualquer ajuda é muito apreciada! Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion