本文解释了整洁评估的新 curly curl 方法。给出了几个例子来展示这种非标准评估(NSE)风格的使用。
library(tidyverse)
# Example 1 --------------------------
max_by <- function(data, var, by) {
data %>%
group_by({{ by }}) %>%
summarise(maximum = max({{ var }}, na.rm = TRUE))
}
starwars %>% max_by(height)
starwars %>% max_by(height, by = gender)
# Example 2 --------------------------
summarise_by <- function(data, ..., by) {
data %>%
group_by({{ by }}) %>%
summarise(...)
}
starwars %>%
summarise_by(average = mean(height, na.rm = TRUE),
maximum = max(height, na.rm = TRUE),
by = gender)
我创建了一些自己的函数,这确实是一个更容易开发的框架,而不是担心所有的 quosures 和 bangs 以及所有这些。
然而,同一篇文章解释说我们还没有完全走出困境:
当您需要以某种方式修改输入或其名称时,您只需要引用和取消引用(使用复数变体 enquos() 和 !!!)。
...并且没有提供示例。不抱怨,只是询问是否有人可以填补空白并提供示例。不熟悉 Tidy 评估,我真的不明白作者对这句话的看法(请原谅双关语)。