15得票2回答
为什么将!!(双感叹号)与as.name()结合使用会产生与单独使用!!或as.name()不同的输出?

我使用动态变量(例如ID)作为引用列名称的方式,这取决于我正在处理哪个基因。然后我使用mutate中的case_when创建一个新列,该列将具有依赖于动态列的值。 我以为!!(叹号叹号)是我需要强制评估变量内容的方法;但是,我的新列没有得到预期的输出。只有!!as.name给了我预期的输出,而...

14得票3回答
如何替换已弃用的ggplot2函数aes_string:接受任意数量的命名字符串以指定美学映射? 如何替代已废弃的ggplot2函数 aes_string,以接受任意数量的命名字符串来指定美学映射?

aes_string 曾经有一些方便的行为,我在使用 ggplot2 进行编程时用到了它。但是自从ggplot2版本3.4.0以来,aes_string 已被弃用。我正在努力寻找如何很好地替换它。 具体而言,我之前创建了函数,通过省略号接受任意字符串参数,并通过 do.call 将其传递给 ...

13得票3回答
在 mutate 的右侧使用基于 tidyeval 的非标准评估来重新编码

考虑一个数据框,其中每一列都是一个字符向量,可以取多个值 -- 假设为"A"到"F"。 library(tidyverse) sample_df <- tibble(q1 = c("A", "B", "C"), q2 = c("B", "B", "A")) 我希望创建一个函数,以列名作...

13得票3回答
使用dplyr::case_when进行整洁评估编程

我尝试编写一个简单的函数,用于包装dplyr::case_when()函数。我阅读了 dplyr编程 文档在 https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html 上但是无法弄清楚如何在case_whe...

12得票2回答
如何在函数中正确使用环境变量以操作 data.tables?

让我们举一个简单的例子data <- data.table::data.table(a = 1:10, b = 2:11) j <- quote(c("c") := list(a + 1)) data[, j, env = list(j = j)][] # ...

11得票2回答
在dplyr中使用字符串作为mutate动词的参数

我正在构建一个闪亮的应用程序,需要允许用户定义新的绘图变量。具体来说,我想允许用户定义在mutate函数中使用的表达式。服务器接收表达式作为文本,我想知道如何在dplyr 0.7中使mutate执行它。我可以使用mutate_部分地使其工作,但现在已经被弃用了。它还将新列名定义为整个表达式,而...

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...

9得票3回答
创建一个带参数的函数,传递给dplyr :: filter,如何最好地解决nse的问题?

非标准评估在使用dplyr动词时非常方便。但是在使用这些动词与函数参数时可能会有问题。例如,假设我想创建一个函数,以给定物种的行数作为输出结果。 # Load packages and prepare data library(dplyr) library(lazyeval) # I pre...

9得票2回答
R中的quo_name等价于quos。

你好,在阅读 dplyr 编程 中,我注意到可以使用 quo_name 添加名称。我想知道如何为多个列实现这样的操作,例如类似于 quos_name。例如: my_mutate <- function(df, expr) { expr <- enquo(expr) mea...

9得票1回答
了解在函数中何时使用ensym、sym和enquo

我正在努力理解quo/unquo语法的不同之处,以及何时应该使用每种语法。 我主要编写将数据框和列作为参数传递的函数--使用ggplot绘图或使用dplyr(group_by、summarize、mutate等)进行汇总/操作数据。 但是,偶尔我也必须在我的整体函数中使用不使用NSE的函数。...