问题标签 [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 投票
1 回答
702 浏览

r - 在 dplyr 0.7.0+ 中正确使用 dplyr::select,使用字符向量选择列

假设我们有一个字符向量cols_to_select,其中包含我们要从数据框中选择的一些列df,例如

假设我们也想使用dplyr::select它,因为它是使用的操作的一部分,%>%因此使用select使代码易于阅读。

似乎有许多方法可以实现这一点,但有些方法比其他方法更强大。请你能告诉我哪个是“正确”的版本,为什么?或者也许还有另一种更好的方法?

ps我意识到这可以在base R中简单地使用df[,cols_to_select]

0 投票
1 回答
170 浏览

r - dplyr、tidyr 和 ggplot 的函数

我怎样才能制作一个函数,它需要一个列并在 dplyr、tidyr 和 ggplot 中使用它?

如何编写函数接受参数param_col而不是硬编码的 col_a

dplyr 和 ggplot 调用在下面概述的代码中工作。但是complete调用应该怎么写呢?还是应该complete_使用?

有没有更规范的方式来做到这一点?

0 投票
0 回答
254 浏览

r - 将tidyeval quo() 与gather() 一起使用时出错

我正在尝试在数据帧上运行gather(),并使用!!quo() 以编程方式分配.key 列名称。但我不断收到“错误:无效的列规范”。我什至发现了一张封闭的票,它表明它应该可以工作(https://github.com/tidyverse/tidyr/issues/293)。

我将回到使用 rename_() 作为解决方法,但使用更优雅的 NSE 会很好。

以下作品,但只是一招小马

以下尝试使用 tidyeval 两个给出了相同的错误:

库版本

0 投票
2 回答
133 浏览

r - 选择并重命名存储在变量中

我有几个相似的数据框,它们有很多共同的列。我想从任何表中选择并重命名这些列的子集。

是否可以做类似的事情

但改用 tidyeval 框架?

0 投票
1 回答
1008 浏览

r - dplyr 0.7.1 中的排列函数

我在使用 dplyr 编写函数时尝试使用新的 quo 功能并遇到以下问题:

按变量排列数据框很简单:

但是如果我想设置优惠订单怎么办?例如,任何排列变量都有 2 作为顶部变量,然后正常排序。使用以前版本的 dplyr 我会使用:

但在新结构中,我不确定如何处理。我努力了:

但我得到了错误

我也尝试过使用 quo_name:

但得到这个错误:

任何帮助,将不胜感激

0 投票
4 回答
1747 浏览

r - 以 tidyeval 方式删除列

我想使用 dplyr >= 0.7 删除列向量

错误:字符串必须与列名匹配。未知列:-wt、-qsec、-vs、-am、-gear、-carb

dplyr < 0.7 的工作方式如下:

我已经尝试了我能想到的所有 rlang:syms()、!!、!!!、quo 和 enquo 的组合......帮助!?

0 投票
2 回答
96 浏览

r - bind_rows 和 tidyeval 拼接失败

子集然后绑定按预期工作

但是如果我们跳过中间步骤

它失败了Error: only lists can be spliced

0 投票
1 回答
218 浏览

r - 使用 tidyeval 具有非标量字符向量的 group_by

使用R 3.2.2dplyr 0.7.2我试图弄清楚如何有效地使用group_by作为字符向量提供的字段。

选择很容易我可以像这样通过字符串选择一个字段

像这样通过多个字符串的多个字段

和多个字段通过一个长度 > 1 的字符向量,像这样


由于group_by我无法真正找到一种方法来为多个字符串执行此操作,因为如果我设法获得输出,它最终会按我提供的字符串进行分组。

我设法像这样按一个字符串分组

这已经很丑陋了。

有谁知道我必须写什么才能运行

分别?!!我尝试了, !!!, UQ, enquo, quos,等的各种组合unlist......并将它们保存在中间变量中,因为这有时似乎有所作为,但无法让它发挥作用。

0 投票
3 回答
104 浏览

r - 使用 NSE 语法计算多列的总排名

我的目标是编写一个take_by_rank函数

  • 可以对数据框中任意选择的数字列进行操作;
  • 使用非标准评估,如base::subsetdplyr动词;
  • 自然理解减号,所以这-foo意味着“最大的值得foo到最低的等级”;
  • n按总排名返回顶部或底部行,这是为每个选定变量计算的排名总和。

我对学习最新的dplyr 方法和寻找替代方法都很感兴趣,即对包选择没有限制(纯basedata.table可能?)。

我目前的解决方案是

这似乎没问题,但也许我错过了更直接的东西。如果有办法替换 for 循环,那也很好。

使用示例(供参考)

0 投票
2 回答
1358 浏览

r - dplyr 0.7 等效于弃用的 mutate_

我找不到dplyr 0.7替换将被弃用的mutate_函数的方法。

mutate_函数在我的用中很有用:我在数据库(字符串格式)中存储了许多指令(可以根据需要进行过滤)并将这些指令应用于一个或多个数据帧。

例如 :

有没有办法使用 dplyr 0.7 将变量和指令保持为字符?