Я новичок в программировании с dplyr
. Допустим, у меня есть такая функция:
example <- function(data, group, var){
group <- enquo(group)
var <- enquo(var)
data %>%
group_by(!! group) %>%
summarise(
Min = min(!! var),
Max = max(!! var)
)
}
> diamonds %>% example(cut, price)
# A tibble: 5 x 3
cut Min Max
<ord> <dbl> <dbl>
1 Fair 337 18574
2 Good 327 18788
3 Very Good 336 18818
4 Premium 326 18823
5 Ideal 326 18806
Я хотел бы добавить новый аргумент sort
. Если не указано, функция больше ничего не делает, если указано, функция делает arrange(desc(sort))
.
Я пробовал такие вещи:
example <- function(data, group, var, sort = NULL){
sort <- enquo(sort)
group <- enquo(group)
var <- enquo(var)
data <-
data %>%
group_by(!! group) %>%
summarise(
Min = min(!! var),
Max = max(!! var)
)
if(is.null(sort)) data
else arrange(data, desc(!! sort))
}
Работает, если указан аргумент sort
> diamonds %>% example(cut, price, sort = Min)
# A tibble: 5 x 3
cut Min Max
<ord> <dbl> <dbl>
1 Fair 337 18574
2 Very Good 336 18818
3 Good 327 18788
4 Premium 326 18823
5 Ideal 326 18806
Но если я оставляю sort
пустым, я получаю сообщение об ошибке:
Ошибка: невозможно расположить столбец класса 'NULL' в позиции 1
Как я могу это исправить? Спасибо за помощь и извините за плохой английский