10得票1回答
如何使用quosures将命名向量传递给dplyr::select函数?

使用旧的select_()函数,我可以将一个命名向量传递到select中,同时更改位置和列名称:my_data <- data_frame(foo = 0:10, bar = 10:20, meh = 20:30) my_newnames <- c("newbar" = "b...

7得票2回答
使用dplyr::case_when动态传递参数

我希望能够以编程方式使用dplyr的case_when函数来替换基础R中的cut()函数。 目前,可以通过NSE(非标准评估)方法将外部参数与case_when函数一起使用,例如: library(dplyr) library(rlang) patterns <- list( ...

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

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

8得票2回答
使用dplyr进行函数式编程

我希望能够使用dplyr中的非标准评估方式更有效/优雅地传递多个参数给group-by函数。我不想使用...运算符,而是要单独指定函数。 我的具体用例是一个函数,它接受一个数据框并创建一个具有更简单语法的ggplot对象。以下是我想要使用我的函数自动化的代码示例: # create dat...

7得票3回答
R dplyr: 如何在使用 summarize(across()) 时引用数据中的变量名?

我想使用summarize函数编写一个灵活的函数,满足以下要求: 聚合函数由用户提供 聚合函数可能使用数据本身中的变量作为进一步的参数。 一个很好的例子是用户提供fun=weighted.mean()并指定权重参数w。 目前,我正在尝试使用...,但问题在于我没有找到一种方式使......

12得票3回答
在R中将引用对象转换为字符串

我一直在使用dplyr的quo表达式:library(dplyr) library(ggplot2) thing <- quo(clarity) diamonds %>% select(!!thing) print(paste("looking at", thing)) [...

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

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

7得票2回答
每个会话只显示一次警告该如何实现?

我的包中有一个功能应该谨慎使用。 用户应该意识到这一点,但如果他/她认为情况可以接受,那么每次调用函数时都显示警告会很麻烦。 我经常看到只显示一次的警告。它们非常难以调试,因此我找不到可重现的示例(如果我有,我会添加一个示例),但它们显示特定的警告消息,后面是 rlang 信息: 此警...

10得票3回答
dplyr: mutate_at + coalesce: 动态列名

我一直在尝试将mutate_at与coalesce结合起来,以处理动态生成列名的情况。 在我的示例中,只有五列,但在实际数据中有更多列(并不是所有列都应包含在coalesce步骤中)。 示例DF: data_example <- data.frame( aa = c(1, NA...

7得票2回答
如何在 `mutate` 中的 `map` 内部取消引用 (`!!`)。

我正在使用map2和mutate修改foo中的嵌套数据帧,并且我想根据foo$name在每个嵌套数据帧中命名一个变量。我不确定在这里使用非标准评估(NSE)/tidyeval去引用的正确语法。 library(tidyverse) foo <- mtcars %>% gro...