【发布时间】:2023-07-19 02:00:01
【问题描述】:
我想对dplyr 函数(比如count())使用具有默认NULL 值的可选参数。如果我对!!enquo() 使用标准过程,我会收到错误消息:error: Column NULL is unknown。
有趣的是,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
由reprex package (v0.3.0) 于 2019-08-04 创建
【问题讨论】:
-
1 。我在带有空 .GlobalEnv 的 r 控制台的新会话中运行了您的代码。最后两行抛出以下错误
Error: object 'a' not found。 2.生成随机数时set.seed(). -
当我运行代码时,最后两行抛出与 Matifou 相同的错误。
-
这一定是版本问题,
{{}}是在 rlang 0.4 版本中实现的,我相信,你有那个版本,以及最新版本的 dplyr/tidyverse 吗?