问题标签 [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.
r - 在 dplyr 0.7.0+ 中正确使用 dplyr::select,使用字符向量选择列
假设我们有一个字符向量cols_to_select
,其中包含我们要从数据框中选择的一些列df
,例如
假设我们也想使用dplyr::select
它,因为它是使用的操作的一部分,%>%
因此使用select
使代码易于阅读。
似乎有许多方法可以实现这一点,但有些方法比其他方法更强大。请你能告诉我哪个是“正确”的版本,为什么?或者也许还有另一种更好的方法?
ps我意识到这可以在base R中简单地使用df[,cols_to_select]
r - dplyr、tidyr 和 ggplot 的函数
我怎样才能制作一个函数,它需要一个列并在 dplyr、tidyr 和 ggplot 中使用它?
如何编写函数接受参数param_col
而不是硬编码的 col_a
dplyr 和 ggplot 调用在下面概述的代码中工作。但是complete
调用应该怎么写呢?还是应该complete_
使用?
有没有更规范的方式来做到这一点?
r - 将tidyeval quo() 与gather() 一起使用时出错
我正在尝试在数据帧上运行gather(),并使用!!quo() 以编程方式分配.key 列名称。但我不断收到“错误:无效的列规范”。我什至发现了一张封闭的票,它表明它应该可以工作(https://github.com/tidyverse/tidyr/issues/293)。
我将回到使用 rename_() 作为解决方法,但使用更优雅的 NSE 会很好。
以下作品,但只是一招小马
以下尝试使用 tidyeval 两个给出了相同的错误:
库版本
r - 选择并重命名存储在变量中
我有几个相似的数据框,它们有很多共同的列。我想从任何表中选择并重命名这些列的子集。
是否可以做类似的事情
但改用 tidyeval 框架?
r - dplyr 0.7.1 中的排列函数
我在使用 dplyr 编写函数时尝试使用新的 quo 功能并遇到以下问题:
按变量排列数据框很简单:
但是如果我想设置优惠订单怎么办?例如,任何排列变量都有 2 作为顶部变量,然后正常排序。使用以前版本的 dplyr 我会使用:
但在新结构中,我不确定如何处理。我努力了:
但我得到了错误
我也尝试过使用 quo_name:
但得到这个错误:
任何帮助,将不胜感激
r - 以 tidyeval 方式删除列
我想使用 dplyr >= 0.7 删除列向量
错误:字符串必须与列名匹配。未知列:-wt、-qsec、-vs、-am、-gear、-carb
dplyr < 0.7 的工作方式如下:
我已经尝试了我能想到的所有 rlang:syms()、!!、!!!、quo 和 enquo 的组合......帮助!?
r - bind_rows 和 tidyeval 拼接失败
子集然后绑定按预期工作
但是如果我们跳过中间步骤
它失败了Error: only lists can be spliced
r - 使用 tidyeval 具有非标量字符向量的 group_by
使用R 3.2.2和dplyr 0.7.2我试图弄清楚如何有效地使用group_by
作为字符向量提供的字段。
选择很容易我可以像这样通过字符串选择一个字段
像这样通过多个字符串的多个字段
和多个字段通过一个长度 > 1 的字符向量,像这样
由于group_by
我无法真正找到一种方法来为多个字符串执行此操作,因为如果我设法获得输出,它最终会按我提供的字符串进行分组。
我设法像这样按一个字符串分组
这已经很丑陋了。
有谁知道我必须写什么才能运行
和
分别?!!
我尝试了, !!!
, UQ
, enquo
, quos
,等的各种组合unlist
......并将它们保存在中间变量中,因为这有时似乎有所作为,但无法让它发挥作用。
r - 使用 NSE 语法计算多列的总排名
我的目标是编写一个take_by_rank
函数
- 可以对数据框中任意选择的数字列进行操作;
- 使用非标准评估,如
base::subset
或dplyr
动词; - 自然理解减号,所以这
-foo
意味着“最大的值得foo
到最低的等级”; n
按总排名返回顶部或底部行,这是为每个选定变量计算的排名总和。
我对学习最新的dplyr 方法和寻找替代方法都很感兴趣,即对包选择没有限制(纯base
或data.table
可能?)。
我目前的解决方案是
这似乎没问题,但也许我错过了更直接的东西。如果有办法替换 for 循环,那也很好。
使用示例(供参考)
r - dplyr 0.7 等效于弃用的 mutate_
我找不到dplyr 0.7
替换将被弃用的mutate_函数的方法。
mutate_函数在我的用例中很有用:我在数据库(字符串格式)中存储了许多指令(可以根据需要进行过滤)并将这些指令应用于一个或多个数据帧。
例如 :
有没有办法使用 dplyr 0.7 将变量和指令保持为字符?