问题标签 [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.
r - 根据 quosure 命名新变量
我正在尝试编写一个自定义函数,该函数将根据预定义变量向量(例如vector_heavy)中的值计算新变量,然后根据提供给函数的参数(例如custom_name)命名新变量。
这个变量命名是我的 quosure 技能让我失望的地方。任何帮助是极大的赞赏。
我的错误信息如下:
删除!!
before将导致一个函数计算一个字面上名为 的新变量cv_name
,并忽略I 作为参数包含的。mutate()
cv_name
custom_name
我怎样才能让这个函数利用custom_name
我提供的作为参数cv_name
?
r - 将tidyeval quo() 与gather() 一起使用时出错
我正在尝试在数据帧上运行gather(),并使用!!quo() 以编程方式分配.key 列名称。但我不断收到“错误:无效的列规范”。我什至发现了一张封闭的票,它表明它应该可以工作(https://github.com/tidyverse/tidyr/issues/293)。
我将回到使用 rename_() 作为解决方法,但使用更优雅的 NSE 会很好。
以下作品,但只是一招小马
以下尝试使用 tidyeval 两个给出了相同的错误:
库版本
r - group_by 通过使用整齐评估语义的字符向量
我曾经这样做,使用group_by_
但现在group_by_
已弃用。我不知道如何使用整洁的评估框架来做到这一点。
r - 使用 dplyr::mutate 创建一个新变量,并为用户定义的函数粘贴两个现有变量
我想创建一个函数来从数据框中加入置信区间的下限和上限(命名为CIlow
and )。CIhigh
请参阅下面的数据框作为示例。
数据框具有CIlow
和CIhigh
用于多个组(命名为a
和)b
和c
多个变量(在本例中为两个,即数据框的行)。
为了构建我自己的函数,我尝试了以下代码:
但是在使用该功能时
我没有得到预期的输出
但以下错误消息:
错误:LHS 必须是名称或字符串
你知道为什么吗?我该如何解决这个问题?提前致谢。
r - 是否可以使用 rlang 构造赋值表达式?
我正在尝试使用 rlang 包来构造一个执行赋值的表达式,给定一个右侧表达式(要分配的值)和一个左侧表达式(分配它的位置)。例如,假设我要构造和评估表达式a <- 5
:
如您所见,上述构造和评估此分配的方法都没有达到预期的效果。有没有办法正确地做到这一点?
编辑:使用assign
而不是<-
不是一个好的解决方案,因为它只适用于变量,而不是对象的元素。例如,它不适用于:
编辑 2:我写了一个概念证明来展示我想要完成的事情。它定义了一个assign_general
允许任意左侧的函数,例如assign_general(a[[1]], 5)
等效于a[[1]] <- 5
. 但是,我的实现似乎有点骇人听闻,我不知道我可能错过了哪些极端情况,而且我仍然不确定是否有更直接的方法来做到这一点,所以我仍然有兴趣看看是否有人有一个更好的解决方案。
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 - 在R中使用带有ggplot的tidyeval方法
Hadley Wickham 刚刚创建了新的dplyr
编程工具,可用于在 dplyr 动词中将字符串作为函数参数传递。我想知道它是否也可以与ggplot一起使用。
我正在尝试:创建一个将分组变量作为输入的自定义函数,生成计数和给定组中行的比例百分比。这是代码。这里gprop
是“分组比例”功能。
这是输出和绘图。
在代码中,p_2
不起作用。p_1
这是一个黑客作品。有可能做p_2
工作吗?此外,由于p_2
不起作用,我无法在其中添加重新排序(KK 然后 AA 然后 DD)变量,因为我试图通过p_3
. 可能是我想错了方向。可能有一个完全不同的更好的解决方案。
r - 如何实现类似变异的链式评估?
Dplyr 的mutate
函数可以评估“链式”表达式,例如
如何实施?快速浏览 dplyr 的源代码会发现候选代码的基本结构:
...但是这种“幼稚”的实现不起作用,并且背后的 C++ 代码mutate_impl
非常复杂。我知道它不起作用,因为lazy_eval
on "lazy_dots"
uses lapply
,即每个表达式都是相互独立地评估的,而我宁愿需要链式评估并将结果返回到共享环境。如何让它发挥作用?