问题标签 [tidyeval]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
32507 浏览

r - 在ggplot中循环变量

我想使用 ggplot 循环遍历多个列以创建多个图,但是在 for 循环中使用占位符会改变 ggplot 的行为。

如果我有这个:

这工作正常:

但这不会:

如果我想最终遍历 x、y 和 z,这是一个问题。有什么帮助吗?

0 投票
4 回答
22826 浏览

r - dplyr:如何在函数中使用 group_by?

我想在另一个函数中使用该dplyr::group_by函数,但我不知道如何将参数传递给这个函数。

有人可以提供一个工作示例吗?

0 投票
6 回答
87644 浏览

r - 如何使用变量在ggplot中指定列名

我有一个 ggplot 命令

在一个函数里面。但我希望能够使用函数的参数来挑选出用作颜色和组的列。即我想要这样的东西

这样 ggplot 中使用的列由参数确定。例如对于 f("majr") 我们得到的效果是

但是对于 f("gender") 我们得到的效果是

我尝试过的一些事情:

不工作。也没有

0 投票
3 回答
9334 浏览

r - 在函数内部使用 dplyr 时出错

我正在尝试组合一个函数,该函数从我的原始数据框创建一个子集,然后使用 dplyr 的 SELECT 和 MUTATE 根据萼片/花瓣的宽度和长度之和为我提供大/小条目的数量.

基本上,我希望函数返回大花的数量。但是,当我运行该函数时,出现以下错误 -

我究竟做错了什么?

0 投票
4 回答
5766 浏览

r - 如何在带有 tidyr 和 ggplot2 的函数中使用 dplyr 的 enquo 和 quo_name

我正在尝试编写一个函数,它将即将发布的dplyr开发版本中的 quosures 与tidyr::gatherand结合起来ggplot2。到目前为止,它似乎适用于tidyr,但我在绘图时遇到了麻烦。

以下功能似乎适用于tidyr's gather

但我不知道如何使情节发挥作用。我尝试使用!!gathwith ggplot2,但没有奏效。

0 投票
3 回答
157 浏览

r - 在捕获环境时在操作后转发点中的表达式

我有一个fun_1利用substitute()...参数的函数,以及另一个具有实现模式fun_2的签名的函数。我想在里面看到传递给. 这是我正在尝试做的一个说明。fun_2(...)do.call(fun_1, dots)fun_1()fun_2()...fun_2()

我认为有足够的魔力rlang来完成这项工作,但我无法弄清楚如何做。我可以修改fun_1,只要

  1. fun_1()可以访问foobar
  2. do.call 模式在fun_2()

编辑:我也需要fun_2(list(foo, bar, NULL))工作

0 投票
2 回答
346 浏览

r - 在 rlang 表达式的 quasiquotation 中使用预先存在的字符向量

有时,当使用dplyr一个列名的字符向量时,该字符向量将用于对数据进行操作,例如:

dplyr0.5.0 及更早版本中,推荐的解决此问题的方法是使用verb_下划线结构,如下所示:

verb_现在不推荐使用这些函数,取而代之的是rlang库引入的新的 tidy 评估框架 (dplyr.tidyverse.org/articles/programming.html)。

dplyr0.7.0 开始,以下作品无需任何特殊调整:

请注意,在 的开发版本中dplyr,情况并非如此

动机

在闪亮的应用程序中选择列是一个很好的示例用例,这就是使用verb_符号的方法

0 投票
2 回答
1279 浏览

r - 整洁的评估编程和ggplot2

试图编写一个相对简单的包装器来生成一些图,但无法弄清楚如何指定分组变量的整洁评估,该分组变量指定为...一个示例函数,该函数对变量进行分面但不通过分组进行区分......

很好用,但是如何区分不同的hair_color?通常这是在内部完成的,aes()但由于这是使用quos()(即quo_group)我应该(我认为)aes_()使用的结果

我现在看不到或解决了多次阅读dplyr 编程的错误。

谁能指出我的错误/给我指路?

0 投票
3 回答
1671 浏览

r - 如何将表示表达式的字符串传递给 dplyr 0.7 动词?

我想了解如何将表示表达式的字符串传递给 dplyr,以便字符串中提到的变量被评估为数据框中列上的表达式。关于这个主题的主要小插曲涵盖了 quosures 的传递,并且根本不讨论字符串。

很明显,在表示表达式时,quosures 比字符串更安全、更清晰,所以当可以使用 quosures 代替时,我们当然应该避免使用字符串。但是,当使用 R 生态系统之外的工具时,例如 javascript 或 YAML 配置文件,通常必须使用字符串而不是 quosures。

例如,假设我想要一个使用用户/调用者传入的表达式进行分组计数的函数。正如预期的那样,以下代码不起作用,因为 dplyr 使用非标准评估来解释group_by.

在 dplyr 0.5 中,我们将使用标准评估,例如group_by_(.dots = groups),来处理这种情况。既然不推荐使用下划线动词,我们应该如何在 dplyr 0.7 中做这种事情?

在只是列名的表达式的特殊情况下,我们可以使用这个问题的解决方案,但它们不适用于更复杂的表达式2 * cyl,例如不仅仅是列名。

0 投票
2 回答
573 浏览

r - 包中的 dplyr 0.7.0 tidyeval

前言

我通常dplyr在我的包裹中使用。在此之前0.7.0,我使用下划线版本的dplyr动词来避免在R CMD CHECK. 例如,代码:

会产生R CMD CHECK注释:

相比之下,使用标准评估版:

没有产生这样的注释。

但是,在dplyrdplyr 0.7.0的小插图编程中说,在包中包含函数(以避免注释)的适当语法是:dplyr

因此,新闻文件说“不再需要每个主要动词的下划线版本,因此这些功能已被弃用(但为了向后兼容而保留)。”

问题

小插图说上面的新语法不会产生R CMD checkNOTES,“前提是你也用 . 导入rlang::.data@importFrom rlang .data。” 但是,当我运行代码时:

此错误是否类似于以下错误?

也就是说,对于某些函数,以包为前缀调用它们会产生错误?(可能与它们是否已被导出有关?)

评论

dplyr顺便说一句,在 0.7.0 中是否有一种更简洁的方式来使用新语法编写对包友好的函数?特别是 的语法dplyr >=0.7.0

比以下的语法更冗长dplyr <0.7.0

随着更多变量被引用,详细程度也会增加。但是,我不想在带下划线的版本中使用不那么冗长的语法,因为它已被弃用。