Я хочу использовать необязательный аргумент, который имеет значение по умолчанию NULL
для функции dplyr
(скажем, count()
). Если я использую стандартную процедуру с !!enquo()
, я получаю сообщение об ошибке: Ошибка: столбец NULL
неизвестен.
Интересно, что rlang/tidyverse
допускает отсутствующие значения, поэтому одна уловка может заключаться в преобразовании в отсутствующее значение, если NULL, но кажется довольно грязным (особенно, если я хочу использовать facet_grid
после, он принимает NULL, но не пропадает).
library(tidyverse)
df <- tibble(a = sample(LETTERS[1:2], 100, replace = TRUE),
b = sample(LETTERS[3:4], 100, replace = TRUE),
value = rnorm(100,5,1))
f2 <- function(df, group_var1=a, group_var2=NULL, group_var3) {
res <- df %>%
count({{group_var1}}, {{group_var2}}, {{group_var3}})
print(res)
ggplot(aes(x=a, y=n), data = res)+
geom_col() +
facet_grid(row= enquo(group_var2))
}
f2(df, group_var1 = a, group_var2=b)
#> # A tibble: 4 x 3
#> a b n
#> <chr> <chr> <int>
#> 1 A C 26
#> 2 A D 29
#> 3 B C 16
#> 4 B D 29
f2(df, group_var1 = a)
#> Error: Column `NULL` is unknown
Создано 4 августа 2019 г. пакетом REPEX (v0.3.0)
Error: object 'a' not found
. 2. При генерации случайных чиселset.seed()
. - person Grada Gukovic   schedule 05.08.2019{{}}
был реализован в rlang версии 0.4, я думаю, у вас есть эта версия и последняя версия dplyr / tidyverse? - person Matifou   schedule 05.08.2019