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

r - 在 dplyr 的函数中使用变量名

我想在dplyr. 请参见下面的示例:

它工作得很好,但我想color通过字符串来引用,如下所示:

我很乐意以任何方式做到这一点,并且非常乐意使用易于阅读的dplyr语法。

0 投票
4 回答
5766 浏览

r - 如何在带有 tidyr 和 ggplot2 的函数中使用 dplyr 的 enquo 和 quo_name

我正在尝试编写一个函数,它将即将发布的dplyr开发版本中的 quosures 与tidyr::gatherand结合起来ggplot2。到目前为止,它似乎适用于tidyr,但我在绘图时遇到了麻烦。

以下功能似乎适用于tidyr's gather

但我不知道如何使情节发挥作用。我尝试使用!!gathwith ggplot2,但没有奏效。

0 投票
3 回答
1530 浏览

r - 如何在 dplyr 0.7 中参数化函数调用?

dplyr 0.7 的发布包括对 dplyr 编程的重大改革。我仔细阅读了这份文档,并试图了解它将如何影响我对 dplyr 的使用。

这是我在使用 dplyr 构建报告和聚合函数时使用的一个常见习语:

这里,grouping_vars是一个字符串向量。

我喜欢这个习惯用法,因为我可以从其他地方传入字符串向量,比如文件或 Shiny 应用程序的反应式 UI,但它对于交互式工作也不是太糟糕。

但是,在使用 dplyr vignette 的新编程中,我看不到如何使用新的 dplyr 完成类似操作的示例。我只看到了传递字符串不再是正确方法的示例,而我必须使用 quosures。

我很高兴采用 quosures,但我究竟如何从字符串中得到 dplyr 在这里所期望的 quosures?期望整个 R 生态系统为 dplyr 提供 quosures 似乎是不可行的——很多时候我们会得到字符串并且它们必须被转换。

这是一个示例,显示您现在应该做什么,以及我的旧习语如何不起作用:

0 投票
3 回答
157 浏览

r - 在捕获环境时在操作后转发点中的表达式

我有一个fun_1利用substitute()...参数的函数,以及另一个具有实现模式fun_2的签名的函数。我想在里面看到传递给. 这是我正在尝试做的一个说明。fun_2(...)do.call(fun_1, dots)fun_1()fun_2()...fun_2()

我认为有足够的魔力rlang来完成这项工作,但我无法弄清楚如何做。我可以修改fun_1,只要

  1. fun_1()可以访问foobar
  2. do.call 模式在fun_2()

编辑:我也需要fun_2(list(foo, bar, NULL))工作

0 投票
2 回答
346 浏览

r - 在 rlang 表达式的 quasiquotation 中使用预先存在的字符向量

有时,当使用dplyr一个列名的字符向量时,该字符向量将用于对数据进行操作,例如:

dplyr0.5.0 及更早版本中,推荐的解决此问题的方法是使用verb_下划线结构,如下所示:

verb_现在不推荐使用这些函数,取而代之的是rlang库引入的新的 tidy 评估框架 (dplyr.tidyverse.org/articles/programming.html)。

dplyr0.7.0 开始,以下作品无需任何特殊调整:

请注意,在 的开发版本中dplyr,情况并非如此

动机

在闪亮的应用程序中选择列是一个很好的示例用例,这就是使用verb_符号的方法

0 投票
2 回答
351 浏览

r - 使用 dplyr quos 引用 ... 中的单个变量

阅读使用 dplyr 编程的指南,我可以...一次引用所有变量。但是我怎样才能单独使用它们呢?

这是一个计算两个变量的函数。它成功使用quos()and !!!

现在我想要tidyr::spread第二个变量,在这种情况下是am列。当我添加到我的功能时:

我得到:

错误:无效的列规范

我应该如何仅引用cols <- quos(...)列表的第二个变量?

0 投票
1 回答
481 浏览

r - 在 dplyr 0.6 中对多个以编程方式指定的变量进行分组

这是新的 dplyr,即将发布 Real Soon Now。

dplyr编程小插图给出了一个group_by使用外部函数中指定的分组变量进行调用的示例:

这在提供单个分组变量时有效。但是,它因多个变量而失败。

简化示例:

在 rlang 框架内,我该如何解决这个问题?

理想情况下,我希望f' 的签名保持不变,即我将分组变量指定为单个向量,而不是通过...参数。

0 投票
2 回答
692 浏览

r - 如何检测rlang中的空quosure?

这些都不起作用:

0 投票
1 回答
2655 浏览

r - 在 R 中绘图后自动调用 dev.off

我正在寻找一种在有人调用 plot() 或 ggplot() 时自动调用 dev.off() 将绘图刷新到磁盘的方法。

这可能吗?RStudio 看起来会自动加载绘图,它是如何工作的?

0 投票
1 回答
9130 浏览

r - 错误:rstudio 中软件包“rlang”的编译失败 - Debian jessie 8.0

我正在尝试在我的 Debian jessie 机器上安装 R(版本 3.1.1 64 位)中的“预测”包。

我已经安装了分析所需的其他 R 包。但是,当我尝试安装“预测”包时,它需要依赖项,即 rlang、tipple 和 ggplot2。从错误日志(如下所示)中可以看出,tipple 和 ggplot2 需要安装 rlang 才能安装它们。

gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c sexp.c -o性交

gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c splice.c -o拼接.o

在 splice.c:2:0 包含的文件中:

vector.h:在函数“namespace_rlang_sym”中:

vector.h:94:19: 错误: 'R_DoubleColonSymbol' 未声明(在此函数中首次使用)return(Rf_lang3(R_DoubleColonSymbol, rlang_sym, sym)); ^ vector.h:94:19: 注意:每个未声明的标识符对于它出现的每个函数只报告一次

/usr/lib/R/etc/Makeconf:128:目标“splice.o”的配方失败

制作:*** [splice.o] 错误 1

错误:包“rlang”的编译失败</p>

  • 删除 '/usr/local/lib/R/site-library/rlang'</li>

install.packages 中的警告:安装包“rlang”的退出状态非零错误:依赖项“rlang”不适用于包“tibble”*删除“/usr/local/lib/R/site-library/tibble” </p>

install.packages 中的警告:安装包“tibble”的退出状态非零错误:依赖项“tibble”不适用于包“ggplot2”*删除“/usr/local/lib/R/site-library/ggplot2” </p>

install.packages 中的警告:安装包“ggplot2”的退出状态非零错误:依赖项“ggplot2”不适用于包“预测”*删除“/usr/local/lib/R/site-library/forecast” </p>

install.packages 中的警告:安装包“预测”的退出状态非零

rlang 安装失败并显示上述错误消息。任何专家的帮助将不胜感激。