小编mke*_*ney的帖子

使用 tidy 评估选择命名的 [list] 元素

我试图理解rlang包中解释的非标准评估。考虑到这个目标,我的问题是:

如何编写dplyr::select.list()符合整洁评估原则的函数?

这是我当前如何编写包装器的示例dplyr::select()

select_wrapper <- function(x, ...) {
  vars <- rlang::quos(...)
  dplyr::select(x, !!!vars)
}
Run Code Online (Sandbox Code Playgroud)

适用于数据框,例如,

> select_wrapper(mtcars, cyl, mpg)
> ##                     cyl  mpg
> ## Mazda RX4             6 21.0
> ## Mazda RX4 Wag         6 21.0
> ## Datsun 710            4 22.8
> ## Hornet 4 Drive        6 21.4
> ## Hornet Sportabout     8 18.7
> ## Valiant               6 18.1
Run Code Online (Sandbox Code Playgroud)

但不在列表中:

attr(mtcars, "test") <- "asdf"
mtcars_list <- attributes(mtcars)
select_wrapper(mtcars_list, row.names, test)
> ## 1: …
Run Code Online (Sandbox Code Playgroud)

r non-standard-evaluation tidyeval rlang

4
推荐指数
1
解决办法
1661
查看次数

标签 统计

non-standard-evaluation ×1

r ×1

rlang ×1

tidyeval ×1