问题标签 [quosure]

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 投票
2 回答
175 浏览

r - 将带引号的列表转换为 dplyr::filter 的带引号的表达式列表

我正在编写一个函数,该函数dplyr::filter在执行其他操作之前结合了一个步骤(我想对其进行参数化)。我想为可以覆盖的过滤条件提供一个默认参数。这排除了通过... 一次尝试传递过滤参数,如下所示:

逗号分隔似乎产生了问题。查看 dplyr 的代码,它是通过调用内部函数来处理的,该函数 quo_reduce似乎将逗号分隔的值与&. 我不明白如何在不使用的情况下做到这一点...

TLDR:如何以编程方式将一组参数传递给包含默认表达式的 dplyr::filter?

0 投票
2 回答
267 浏览

r - 使用 `rlang` 创建一个`~ x + y` 类型的新公式

我正在尝试编写一个自定义函数,我想在其中使用该cor.test函数,但我无法取消引用创建工作公式所需的参数。

这是我目前无法使用的东西-

我尝试了这种方式,因为如果我不必在函数环境中取消引用公式,它似乎可以工作。

关于如何实现这一点的任何想法?

0 投票
1 回答
159 浏览

r - 将 `rlang::exec` 与使用 `rlang::ensym` 的函数一起使用

我正在尝试编写一个更复杂的自定义函数,因此为了简单起见,我创建了玩具示例。

假设我想写一个函数——

  1. 自动决定要运行的适当函数:例如,t 检验或方差分析。
  2. 接受"quoted"unquoted参数

所以我编写了一个函数来运行 t 检验(按预期工作):

然后我编写了一个函数来运行方差分析(按预期工作):

然后我写了一个元函数来从上面选择合适的函数——

但这似乎不起作用。关于我在这里做错了什么以及如何让它发挥作用的任何想法?

0 投票
3 回答
287 浏览

r - 接受裸(来自 rlang)或字符串作为函数输入

我编辑包中的现有功能。目前,该函数接受数据框中的列名作为字符串。我正在更新函数以接受字符串名称或裸名称。但我遇到了一些问题。

我想采用的一般方法是将裸字符转换为字符串,因此不需要更新函数的其余部分。如果用户传递一个字符串列名,那么我不需要修改输入。

下面的代码将裸输入转换为字符串,但我不知道如何有条件地转换为字符串或不修改字符串。

0 投票
2 回答
129 浏览

r - 使用 quosures 映射变量列表

假设我想用来purrr::map创建一个模型列表,每个模型都使用不同的变量作为预测变量。我想我可以做这样的事情:

有人可以解释为什么这不起作用吗?

所需的输出是:

0 投票
3 回答
203 浏览

r - 将带有破折号的quosure转换为字符串?

当我做:

输出是:

在破折号周围插入空格。

当我尝试将其转换为字符串时,我得到:

或者

或者

如何在我的函数中使用带有破折号的字符串?该函数接受一个基因名称并在数据框中查找该行,但一些基因由破折号连接:

谢谢!

之前已经问过这个问题:https ://github.com/r-lib/rlang/issues/770 ,但它没有回答如何实际执行此操作。

0 投票
1 回答
398 浏览

r - 将 dplyr quosure 自定义函数与 mutate_at 一起使用

我正在尝试构建一个辅助函数来提取参数中给出的列中的数字。我可以在里面使用我的函数mutate(并对所有感兴趣的列重复它),但它似乎在里面不起作用mutate_at

这是我的数据的示例:

所以我已经构建(使用dplyr语法)这个助手来改变PayXX我拥有的每一列:

此功能适用于dplyr::mutate

但是当我尝试在内部使用相同的函数时mutate_at,它会返回 NA:

有人遇到过类似的问题吗?在这种情况下,我该如何处理该mutate_at功能?

谢谢,

可复制的例子

0 投票
1 回答
338 浏览

r - 列名变量的“enquo”不适用于“dplyr::filter”

假设我们有以下数据框:

还有一个存储odd列名的变量:

如何在操作中使用odd_col引用odddplyr::filter

从我在dplyr中引用的文档中读到的内容,我认为以下是正确的方法:

但这会导致错误:

错误:参数 2 过滤条件不计算为逻辑向量

但是,这种方法似乎适用于其他dplyr操作,例如,

0 投票
1 回答
111 浏览

r - 如何将 output$suffix 名称的后缀合并到 R shiny 中的 input$suffix_rows_selected 函数中?

我正在尝试output$suffix在 R Shiny 中获取名称的后缀并将其合并到input$suffix_rows_selected函数中。向下钻取表为空。有人知道我做错了什么吗?

我正在尝试构建的功能:

错误示例: 有效但超出 f.drilldata 函数的示例
0 投票
1 回答
95 浏览

r - R Quasiquotation & tidyeval 用于 R 中自己函数中的动态变量引用

我试图在我自己的函数中使用 R 中 tidyverse 的准引用来解决问题。我在这里读过这个:将参数列表传递给具有准引用的函数以及这里的全部内容:https ://tidyeval.tidyverse.org/

但我仍然没有让它工作。

假设我有以下数据:

我现在要做的是编写一个执行以下操作的函数:

  • 取一个数据集
  • 指定包含时间的变量(注意,在另一个数据集中,这可能称为“小时”或“qtime”或其他)
  • 指定我想对哪些组进行操作/统计

所以我希望用户做的是使用如下功能:

test_function(data = dat, time_var = "time", group_vars = c("group1", "group3"))请注意,我下次可能会选择不同的分组变量或不选择。

假设在我想要的函数中:

  • 计算时间变量的某些统计数据,例如分位数。注意:我想通过我的分组变量来拆分它

这是我最近的尝试之一:


我的代码有什么问题?即,我专门与!!,!!!,sym,enquo,enquos 事物作斗争。为什么 group_by_at 东西不需​​要 !! 东西,而我的汇总和变异确实需要它?