本文介绍了新的整洁求值(tidy evaluation)方法,详见此文。文章举了几个例子,展示了这种非标准求值(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之类的问题。
然而,同一篇文章解释说,我们还没有完全摆脱困扰:
只有在需要以某种方式修改输入或其名称时,才需要使用quote-and-unquote(以及复数变种enquos()和!!!)。
...但没有提供示例。不是抱怨,只是询问是否有人可以填补间隙并提供一个示例。由于不熟悉整洁评估,我真的不明白作者在引用中想表达什么意思。
summarise(colNm :=
的列,您可能需要使用 !! - akrunenquos()
或!!!
。最好能看到每个单独使用的示例。我希望它在参考文章中,但实际上并没有。 - Display name