问题标签 [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 投票
4 回答
7275 浏览

r - 将列名作为字符串传递给 group_by 并汇总

从 dplyr 0.7 版开始,不推荐使用以下划线结尾的方法,例如 summarise_group_by_,因为我们应该使用 quosures。

见: https ://cran.r-project.org/web/packages/dplyr/vignettes/programming.html

我正在尝试使用 quo 和 !! 来实现以下示例

工作示例:

但是,在这种情况下,我需要将要分组和汇总的列指定为字符串。

我怎样才能得到与上面相同的例子?

0 投票
3 回答
6142 浏览

r - 将quosure转换为R中的字符串

我一直在使用 dplyr 的 quosures:

[1]《看着~》《看着清明》

我真的很想打印出放入quo的字符串值,但只能得到以下内容:

<quosure:全球>

~清晰

明晰()

[1] “清晰”

有没有更简单的方法来“取消引用”quo()?

0 投票
2 回答
591 浏览

r - 如何将多列作为字符串传递给 dplyr::mutate_at 中的函数

我有以下(高度简化)dplyr示例mutate

我想让它使用mutate_at它可以将列名作为字符串传递给我。

但这不起作用。如何让它工作?

0 投票
4 回答
505 浏览

r - 在函数中获取过滤器以进行整洁的评估

我正在尝试使用 dplyr 根据动态变量进行过滤。

我发现要让过滤器工作,我需要将变量名括在括号中。但是,如果我将它编程为一个函数,它就不能正常工作。

我想学习为自己找到这些问题的答案,这些问题类型的问题是关于 dplyr 的,所以请随时向我推荐编程小插曲的相关部分

0 投票
1 回答
771 浏览

r - dplyr::mutate 取消引用 RHS

我想知道如何正确地UQ在 RHS 上dplyrmutate. 请参阅我在wilcox.test此 MWE 部分的评论中收到的错误消息:

我猜!!(qcol) ...它被解释为我想取消引用整个表达式,而不仅仅是变量名,这就是它找不到的原因base?我还发现(!!qcol)返回字符串本身,因此-操作员无法处理它也就不足为奇了。

0 投票
1 回答
775 浏览

r - 将 quosure 和 format 拼接成字符串列表

(和朋友)中的by参数dplyr::left_join需要一个字符串列表。我的代码已经将感兴趣的变量定义为 quosures 列表,因此我想通过将 quosures 列表转换为字符串列表来避免再次写下该列表。

我四处rlang寻找文档,但没有找到现有的解决方案。函数族可以将quo_exprquosures拼接和转换为单个字符串,但它们不会产生字符串列表:

这是一个有用的示例:

0 投票
1 回答
383 浏览

r - readxl::read_excel 中的错误:is_null(n):找不到对象“rlang_is_null”

尝试运行此处给出的示例代码时:

我得到错误Error in is_null(n) : object 'rlang_is_null' not found

关于我的 R 会话的信息:

我认为错误指向rlang包装

我也尝试安装旧版本的readxl包,但我得到了同样的错误。

0 投票
1 回答
79 浏览

r - R - rlang - 处理延迟评估

尝试解决以下用例:
我有一个完整的数据集 ( mydf),我想dplyr::group_by根据另一组变量组合 ( mysplits) 的条目使用不同的变量集。问题是,我的mysplitsdata.frame 包含变量名称作为字符。

有一个dplyr::group_by_选项,但我希望使用类似于rlang功能或类似的工具来实现这一点。

我正在寻找类似的东西:

f()我的谜题中缺少的部分在哪里。

0 投票
1 回答
253 浏览

r - dplyr 编程:unquote-splicing 使用 complete() 和 nesting() 导致 overscope 错误

所以我开始涉足 dplyr 编程的美妙世界。我正在尝试编写一个接受 data.frame、目标列和任意数量的分组列的函数(对所有列使用裸名)。然后,该函数将根据目标列对数据进行分箱,并计算每个分箱中的条目数。我想为原始 data.frame() 中存在的分组变量的每个组合保留一个单独的 bin 大小,因此我使用 complete() 和 nesting() 函数来执行此操作。这是我正在尝试执行的操作以及遇到的错误的示例:

当我手动执行操作时,一切正常。当我使用该功能时,它会因以下错误而失败:

overscope_eval_next(overscope,expr)中的错误:找不到对象“比较”

我已将问题缩小到函数中的以下代码段:

如果我删除对 nesting() 的调用,则代码执行时不会出现错误。但是,我想保留仅使用原始数据中存在的分组变量组合的功能,然后使用 bin 获取所有可能的组合,这样我就可以填充所有丢失的 bin。根据错误名称和失败的地方,我的猜测是这是一个范围/环境问题,我真的应该为嵌套()中的分组变量使用不同的环境,因为它包含在对完成()的调用中。但是,我对 dplyr 编程很陌生,我不知道该怎么做。

我试图通过将分组列合并到一个列中来解决这个问题,然后使用该合并列作为 complete() 的输入。这让我可以按照我想要的方式执行 complete() 操作,同时避免使用 nesting() 函数。但是,当我想分离回原始分组列时遇到了麻烦,因为我不知道如何将 quosures 列表转换为字符向量(separate() 的“into”参数所必需的)。以下是说明我在说什么的代码片段:

以下是相关版本信息:R 版本 3.4.2 (2017-09-28)、tidyr_0.7.2、dplyr_0.7.4

我很感激任何解决方法,但我想知道我在做什么以错误的方式摩擦 complete() 和 nesting() 。

0 投票
3 回答
394 浏览

r - 通过间接引用列来修改数据框中的某些值

我正在处理一些我们分类失败的数据,并按批次计算每个分类箱的有限产量。

我有一个描述分类箱的元表。 行按升序排列,一些排序标签带有非语法名称。

我有一个按分拣箱限制产量的数据表,每批一行,每个分拣箱一个列。因为这个表是从一个转置构造的,所以我们得到了一个特定排序从未发生过很多的实例,结果值为NA. 请注意,此表中的列按测试降序排列。

一些缺失值意味着 100% 的有限收益率,而另一些则反映了未定义的值,因为我们在流程的早期是零收益率。我的任务是酌情用 's替换前一组。NA1.00

完成此操作的一种算法从左到右(降序测试顺序)替换NA1.00if 随后的有限产量不是NA。在示例数据集的第一行中,我们没有更改,fail C因为pass缺少。但是我们确实替换fail A1.00因为fail B没有丢失。

正确的示例输出为: