10得票2回答
Tidy Eval与Base或Get() vs Sym() vs As.symbol()的比较

我一直在努力理解整洁评估或如何在整洁环境中使用变量,但似乎始终无法完全掌握。 例如,我正在尝试使用变量映射来使用ggplot。以下是基本的R版本: library(ggplot2) var1 = "wt" var2 = "mpg" ggplot(mtcars, aes(x = get(var...

10得票3回答
如何在使用filter或filter_时使用双大括号(curly curly)?

我正在回答这个问题,评论者建议使用!!ensym,我认为这可能是使用双大括号{{}}的好地方,但我无法使其起作用(也许不适用?)。 如果不使用filter_、eval/parse或引用-引用,该如何执行此过滤操作?会使用~吗? 我的解决方案(1g)使用filter_和通过paste构建的条...

10得票1回答
如何制作支持引用和非引用参数的tidyverse函数?

我知道如何制作支持使用 dplyr::enquo(variable) 对无引号函数参数 'variable' 进行准引用(quasi-quotation)的函数,或者需要对参数进行引用(quote)的函数,可以使用 rlang::sym("variable")。有没有一种简单的方法可以使函数支...

9得票1回答
何时使用rlang::ensym()而不是rlang::sym()?

我可以从文档中看到,rlang::enquo() 和 rlang::quo() 在不同的上下文中使用。因此,我最近在函数声明中使用了 rlang::ensym()(见下文)。然而,在另一个SE函数调用中包含时,我得到了一个意外的错误,我想这与惰性评估有关(如果我在 f_enysm() 中使用 ...

9得票1回答
dplyr 0.7.0+中dplyr :: select的正确用法,使用字符向量选择列

假设我们有一个包含要从数据框 df 中选择的某些列的字符向量 cols_to_select,例如: df <- tibble::data_frame(a=1:3, b=1:3, c=1:3, d=1:3, e=1:3) cols_to_select <- c("b", "d") ...

9得票2回答
dplyr 0.7中已弃用的mutate_的等效替代方案是什么?

我在 dplyr 0.7 中找不到替代即将被弃用的 mutate_ 函数的方法。 mutate_ 函数在我的使用场景中非常有用:我将许多指令(以字符串格式)存储在数据库中(如果需要,可以进行过滤),并将这些指令应用于一个或多个数据框。 例如: dplyr::tibble(test = "...

9得票1回答
在被 `magrittr` 管道调用的函数中获取计算为“点”(`.`)的表达式

我有一个函数x_expression(),它会打印传递给参数x的表达式。 pacman::p_load(magrittr, rlang) x_expression <- function(x) { print(enquo(x)) } y <- 1 x_expressio...

8得票1回答
使用整洁评估(tidy eval)进行多个dplyr筛选条件

我是一个新手,正在尝试编写通用函数,其中一个我目前遇到的问题是为分类变量编写多个筛选条件。这是我目前正在使用的代码: create_expr <- function(name, val){ if(!is.null(val)) val <- paste0("c('"...

8得票1回答
弯曲的弯曲的整理评估和修改输入或其名称

本文介绍了新的整洁求值(tidy evaluation)方法,详见此文。文章举了几个例子,展示了这种非标准求值(NSE)风格的使用。 library(tidyverse) # Example 1 -------------------------- max_by <- functio...

8得票2回答
能否将多个变量传递给同一个双花括号?

我正在构建一个函数,使用 {{ }}(花括号内再加一个花括号)。 我希望用户能够将多个变量传递到同一个 {{ }}, 但我不确定是否可以使用 {{ }}来实现这一点。我找不到任何示例来展示如何做到这一点。 您能告诉我它是否可行,如果是的话,请帮我使下面的最小重现示例工作? library...