问题标签 [rlang]

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 回答
624 浏览

r - 根据 quosure 命名新变量

我正在尝试编写一个自定义函数,该函数将根据预定义变量向量(例如vector_heavy)中的值计算新变量,然后根据提供给函数的参数(例如custom_name)命名新变量。

这个变量命名是我的 quosure 技能让我失望的地方。任何帮助是极大的赞赏。

我的错误信息如下:

删除!!before将导致一个函数计算一个字面上名为 的新变量cv_name,并忽略I 作为参数包含的。mutate()cv_namecustom_name

我怎样才能让这个函数利用custom_name我提供的作为参数cv_name

0 投票
0 回答
254 浏览

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

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

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

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

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

库版本

0 投票
2 回答
1001 浏览

r - group_by 通过使用整齐评估语义的字符向量

我曾经这样做,使用group_by_

但现在group_by_已弃用。我不知道如何使用整洁的评估框架来做到这一点。

0 投票
1 回答
754 浏览

r - 使用 dplyr::mutate 创建一个新变量,并为用户定义的函数粘贴两个现有变量

我想创建一个函数来从数据框中加入置信区间的下限和上限(命名为CIlowand )。CIhigh请参阅下面的数据框作为示例。

数据框具有CIlowCIhigh用于多个组(命名为a和)bc多个变量(在本例中为两个,即数据框的行)。

为了构建我自己的函数,我尝试了以下代码:

但是在使用该功能时

我没有得到预期的输出

但以下错误消息:

错误:LHS 必须是名称或字符串

你知道为什么吗?我该如何解决这个问题?提前致谢。

0 投票
3 回答
375 浏览

r - 是否可以使用 rlang 构造赋值表达式?

我正在尝试使用 rlang 包来构造一个执行赋值的表达式,给定一个右侧表达式(要分配的值)和一个左侧表达式(分配它的位置)。例如,假设我要构造和评估表达式a <- 5

如您所见,上述构造和评估此分配的方法都没有达到预期的效果。有没有办法正确地做到这一点?

编辑:使用assign而不是<-不是一个好的解决方案,因为它只适用于变量,而不是对象的元素。例如,它不适用于:

编辑 2:我写了一个概念证明来展示我想要完成的事情。它定义了一个assign_general允许任意左侧的函数,例如assign_general(a[[1]], 5)等效于a[[1]] <- 5. 但是,我的实现似乎有点骇人听闻,我不知道我可能错过了哪些极端情况,而且我仍然不确定是否有更直接的方法来做到这一点,所以我仍然有兴趣看看是否有人有一个更好的解决方案。

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 投票
1 回答
638 浏览

r - 在R中使用带有ggplot的tidyeval方法

Hadley Wickham 刚刚创建了新的dplyr编程工具,可用于在 dplyr 动词中将字符串作为函数参数传递。我想知道它是否也可以与ggplot一起使用。

我正在尝试:创建一个将分组变量作为输入的自定义函数,生成计数和给定组中行的比例百分比。这是代码。这里gprop是“分组比例”功能。

这是输出和绘图。

在此处输入图像描述

在代码中,p_2不起作用。p_1这是一个黑客作品。有可能做p_2工作吗?此外,由于p_2不起作用,我无法在其中添加重新排序(KK 然后 AA 然后 DD)变量,因为我试图通过p_3. 可能是我想错了方向。可能有一个完全不同的更好的解决方案。

0 投票
2 回答
132 浏览

r - 如何实现类似变异的链式评估?

Dplyr 的mutate函数可以评估“链式”表达式,例如

如何实施?快速浏览 dplyr 的源代码会发现候选代码的基本结构:

...但是这种“幼稚”的实现不起作用,并且背后的 C++ 代码mutate_impl非常复杂。我知道它不起作用,因为lazy_evalon "lazy_dots"uses lapply,即每个表达式都是相互独立地评估的,而我宁愿需要链式评估并将结果返回到共享环境。如何让它发挥作用?