问题标签 [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 回答
533 浏览

r - 为什么表达式 LHS 中的 `rlang::sym` 和 `rlang::quo_name` 表现相似?

使用 调用下面的函数foo(c("b"))。输出显示为内联。

我很困惑为什么两者(1)df %>% mutate(!!x_ := 100 + !!x))和 (2)df %>% mutate(!!x := 100 + !!x))工作方式相同感到困惑;仅基于dplyr 编程配方(1) 应该可以工作。

0 投票
4 回答
958 浏览

r - 使用 dplyr::filter 的 tidyeval 方式是什么?

使用 调用下面的函数foo(c("b"))。输出显示为内联。

什么是正确的写作方式df %>% filter(!!x > (!!x))

我已经包含了一个使用mutatetidyeval 样式的示例,以将其与filter.

0 投票
2 回答
1682 浏览

r - dplyr 中基于字符串的过滤 - NSE

我想使用dplyr新的 NSE 符号(版本 >= 0.6)来动态filter处理我的数据。假设我有以下虚拟数据集:

如果现在我想过滤tofilter = "x"大于 5 的值的列,我知道我可以这样做:

问题 1

如果我也想动态更改过滤运算符怎么办(假设我有一个 Shiny App,用户可以在其中动态selectInput过滤大于 5、等于 5 或​​小于 5 的值的数据?

我想做的是:

显然,这是行不通的,我已经玩了一些rlangquosore/symbols 等,但没有找到正确的方法来“引用”我的输入。

问题2

额外的问题是,如果我想应用多个过滤器怎么办?我是否需要循环,或者我可以创建一个过滤表达式列表并一次性应用它们?

一个例子是一个闪亮的应用程序,用户可以键入他/她想要应用于数据的多个条件,以便我们有一个动态变化的格式列表:

我们想动态地应用它们,这样输出就相当于:

我想这在某种意义上是问题 1 的一个子集,因为当我知道如何正确引用论点时,我认为我可以这样做:

但很高兴看看是否有更好的清洁方式

0 投票
1 回答
734 浏览

r - 连接quosures和字符串

我正在寻找一种连接 quosure 和结果为 quosure 的字符串的方法。实际上,如果我使用paste0()and quo_name(),我可以做到。但我想知道是否有更优雅的替代方法可以在我的包中编写函数。这是一个通用示例:

0 投票
3 回答
999 浏览

r - 调用参数后使用 dplyr `enquo`

我有一个大致遵循这种结构的函数:

问题是当我包含值检查时出现以下错误:

当我删除检查时,错误消失了。我怎样才能同时保留两者?

0 投票
1 回答
99 浏览

r - 使用 tidyeval 工具(如 `!!` 和 `:=`)构建列表

我正在寻找一种list基于包中定义Rtidyevalrlang框架轻松构建的方法。

以下是我想要实现的目标:

我目前可以获得的是:

或者,添加quosure时它可能会变得更好一点:

不幸的是,我不知道如何从这里进一步前进。

换句话说,我想有一个类似的效果,就像我们可以在dplyr包中得到的一样:

0 投票
2 回答
388 浏览

r - 使用 tidyeval 进行程序化回归建模

我正在尝试使用 tidyeval 进行编程。

我想编写一个函数来为选定的结果变量运行逻辑回归模型:

但是得到:

!enquo_outcome 中的错误:无效的参数类型

(注意真实场景涉及更复杂的功能)。

这可能吗?

0 投票
2 回答
316 浏览

r - 使用带公式的非标准评估

我正在创建一个使用非标准评估来跟踪列的含义的包。该包在函数之间传递一个数据框,这些函数执行不同的操作并执行相同的列集。非标准评估非常适合:

但是,我想要一个适用于公式的函数:

返回Error in !xcol : invalid argument type。我尝试了, 和的各种组合quo(),但基本问题是我不知道需要什么样的对象。enquo()!!lm

0 投票
1 回答
565 浏览

r - 使用 tidyeval 为“lm”编写函数

我正在尝试使用 tidyeval(非标准评估)围绕“lm”编写一个函数。使用基本 R NSE,它可以工作:

但是,我还没有想出如何使用tidyevaland来编写这个函数rlang。我认为substitute应该替换为 beenquo和 eval !!。Hadley 的 Adv-R 中有一些提示,但我无法弄清楚。

0 投票
3 回答
529 浏览

r - dplyr tidyeval 等效于下划线函数版本

dplyr 的最新版本不推荐使用下划线版本的函数,例如 filter_,而支持tidy evaluation

下划线形式的新形式是什么预期的新形式?如何使用 R CMD 检查避免未定义的符号?

是否有首选或更深思熟虑的形式?选项 C 最短,但在我的一些真实世界较大的数据集和更复杂的 dplyr 构造上速度较慢:

mutate_使用更复杂的语法还有另一个答案。