dplyr group_by dynamici c столбцы - PullRequest
       8

dplyr group_by dynamici c столбцы

3 голосов
/ 26 февраля 2020

Каков консенсус относительно лучшего способа group_by, когда group_by получает переменную? Рассмотрим следующую простую функцию:

library(dplyr)

myFunction <- function(df, 
                        col_name) {

    out <- 
      group_by(col_name) %>%
      summarize(mean = mean(mpg))

    return(out)
  }

  myFunction(mtcars, col_name = c('cyl', 'am'))

При вызове этой функции возвращается ошибка, сообщающая, что столбец не существует. Я понимаю, почему, но я не уверен, лучший способ обойти это. Я могу сделать, если работать, если есть только одна группирующая переменная, выполнив:

group_by(!!as.name(col_name)) 

Это, однако, не работает, если col_name является вектором> 1

Есть идеи?

1 Ответ

2 голосов
/ 26 февраля 2020

Вы можете попробовать:

myFunction <- function(df, col_name) {
 out <- df %>%
  group_by_at(vars(one_of(col_name))) %>%
  summarize(mean = mean(mpg))

 return(out)
}

myFunction(mtcars, col_name = c("cyl", "am"))

    cyl    am  mean
  <dbl> <dbl> <dbl>
1     4     0  22.9
2     4     1  28.1
3     6     0  19.1
4     6     1  20.6
5     8     0  15.0
6     8     1  15.4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...