问题标签 [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.
r - 将带引号的列表转换为 dplyr::filter 的带引号的表达式列表
我正在编写一个函数,该函数dplyr::filter
在执行其他操作之前结合了一个步骤(我想对其进行参数化)。我想为可以覆盖的过滤条件提供一个默认参数。这排除了通过...
一次尝试传递过滤参数,如下所示:
但
逗号分隔似乎产生了问题。查看 dplyr 的代码,它是通过调用内部函数来处理的,该函数 quo_reduce
似乎将逗号分隔的值与&
. 我不明白如何在不使用的情况下做到这一点...
TLDR:如何以编程方式将一组参数传递给包含默认表达式的 dplyr::filter?
r - 使用 `rlang` 创建一个`~ x + y` 类型的新公式
我正在尝试编写一个自定义函数,我想在其中使用该cor.test
函数,但我无法取消引用创建工作公式所需的参数。
这是我目前无法使用的东西-
我尝试了这种方式,因为如果我不必在函数环境中取消引用公式,它似乎可以工作。
关于如何实现这一点的任何想法?
r - 将 `rlang::exec` 与使用 `rlang::ensym` 的函数一起使用
我正在尝试编写一个更复杂的自定义函数,因此为了简单起见,我创建了玩具示例。
假设我想写一个函数——
- 自动决定要运行的适当函数:例如,t 检验或方差分析。
- 接受
"quoted"
和unquoted
参数
所以我编写了一个函数来运行 t 检验(按预期工作):
然后我编写了一个函数来运行方差分析(按预期工作):
然后我写了一个元函数来从上面选择合适的函数——
但这似乎不起作用。关于我在这里做错了什么以及如何让它发挥作用的任何想法?
r - 接受裸(来自 rlang)或字符串作为函数输入
我编辑包中的现有功能。目前,该函数接受数据框中的列名作为字符串。我正在更新函数以接受字符串名称或裸名称。但我遇到了一些问题。
我想采用的一般方法是将裸字符转换为字符串,因此不需要更新函数的其余部分。如果用户传递一个字符串列名,那么我不需要修改输入。
下面的代码将裸输入转换为字符串,但我不知道如何有条件地转换为字符串或不修改字符串。
r - 使用 quosures 映射变量列表
假设我想用来purrr::map
创建一个模型列表,每个模型都使用不同的变量作为预测变量。我想我可以做这样的事情:
有人可以解释为什么这不起作用吗?
所需的输出是:
r - 将带有破折号的quosure转换为字符串?
当我做:
输出是:
在破折号周围插入空格。
当我尝试将其转换为字符串时,我得到:
或者
或者
如何在我的函数中使用带有破折号的字符串?该函数接受一个基因名称并在数据框中查找该行,但一些基因由破折号连接:
谢谢!
之前已经问过这个问题:https ://github.com/r-lib/rlang/issues/770 ,但它没有回答如何实际执行此操作。
r - 将 dplyr quosure 自定义函数与 mutate_at 一起使用
我正在尝试构建一个辅助函数来提取参数中给出的列中的数字。我可以在里面使用我的函数mutate
(并对所有感兴趣的列重复它),但它似乎在里面不起作用mutate_at
。
这是我的数据的示例:
所以我已经构建(使用dplyr
语法)这个助手来改变PayXX
我拥有的每一列:
此功能适用于dplyr::mutate
:
但是当我尝试在内部使用相同的函数时mutate_at
,它会返回 NA:
有人遇到过类似的问题吗?在这种情况下,我该如何处理该mutate_at
功能?
谢谢,
可复制的例子
r - 如何将 output$suffix 名称的后缀合并到 R shiny 中的 input$suffix_rows_selected 函数中?
我正在尝试output$suffix
在 R Shiny 中获取名称的后缀并将其合并到input$suffix_rows_selected
函数中。向下钻取表为空。有人知道我做错了什么吗?
我正在尝试构建的功能:
错误示例: 有效但超出 f.drilldata 函数的示例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 东西不需要 !! 东西,而我的汇总和变异确实需要它?