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

r - 使用 purrr 映射按列对迭代总结

我有一个大型数据集,我希望从中获得一列的汇总估计值(平均值、中位数、计数等),当它们按另外两列分组时。

非常努力地弄清楚如何使用purrr- 希望让这个工作流程能够点击未来的项目......但非常卡住。

作为一个可重现的示例,这适用于按am和分组vs,并估计mpg

然而,为了扩展这个例子,假设我想为amand分组vs;然后amgear; 然后amcarb。直觉上,这似乎是map应该处理的事情。

0 投票
1 回答
447 浏览

r - 使用 rlang 和 map 重新编码 R 中的许多变量

我正在清理数据集,需要重新编码许多因子变量。我想使用rlangmap创建一个函数来做到这一点。我的示例数据集和代码如下。我想我几乎明白了,但我似乎无法弄清楚这个错误,可能是因为我没有完全掌握rlang

工作数据集:

这是我将如何重新编码单个变量(以及我想要的结果):

这是我的工作代码:

这给出了以下错误:

如果我删除!!,该函数将编译。但是,当我尝试使用 调用它时recode("var1"),我收到以下错误:

我想拥有该功能,然后运行recode(var1, var2, var3)​​.

0 投票
3 回答
953 浏览

r - do.call() 和整洁的评估

试图do.call()在 tidy 评估的背景下工作:

有什么区别:

和:

它们都给出了相同的错误:

我使用 进入函数browser(),检查了参数,在expr(mutate(df, category = case_when(!!! cat1)))那里运行(如http://rpubs.com/lionel-/programming-draft中建议的通用调试策略),在两种情况下都有相同的输出:mutate(df, category = case_when(~(item_name == "apple" ~ "fruit"), ~(item_name == "bmw" ~ "car"))).

我也尝试调整enviror.env参数无济于事。

我的理解是它可能与不同的quosure环境有关,但environment(cat1[[1]])也是相同的(<environment: R_GlobalEnv>)。

注意:
这在某种程度上是我试图回答的 dplyr::case_when 的 Tidy 评估编程的后续。

0 投票
2 回答
852 浏览

r - 如何使用 dplyr 评估具有非标准评估的构造字符串?

我已经阅读了几本关于编程的指南dplyr进行编程的指南,但我仍然对如何解决使用非标准评估 (NSE) 评估构造/连接字符串的问题感到困惑。我意识到有比使用 NSE 更好的方法来解决这个例子,但我想学习如何去做。

这是我想要的结果,但希望mutate()构建变量:

这是我的第一次尝试,尝试使用字符串:

这是我的第二次尝试,尝试使用 quosures:

这是我的第三次尝试,尝试使用 quosures 和:=运算符:

0 投票
1 回答
571 浏览

r - 带有向量输入的 Dplyr 条件列 ifelse

我正在尝试使用 dplyr 的新 NSE 语言方法来创建条件变异,使用向量输入。我遇到问题的地方是将列设置为等于自身,请参见下面的 mwe:

现在,使用以下内容:

ColToChange值设置为Name,而不是返回其原始值。因此,我试图使用上面的语法来实现这一点:

但不是Name,而是向量。

0 投票
1 回答
2204 浏览

r - 使用 purrr 和 dplyr: 是 rlang::sym 最好的方法

我想编写使用 dplyr 动词的函数,这意味着我必须涉足rlang.

举一个具体的例子,假设我想用来purrr::map_df()迭代 a 中的变量dplyr::group_by()。用dplyr vignette编程遍历编写my_summarise()函数;该方法是rlang::enquo()在分组变量上使用,然后用. 取消引用!!。这种方法可以创建一个新的类似 dplyr 的函数,该函数采用不带引号的变量名称(my_summarise(df, g1)在小插图中)。

相反,我想将变量名作为字符串提供。这rlang::sym()是正确的方法吗?似乎不是,因为sym()在 dplyr 编程小插图中没有提到,在 rlang tidy 评估文章中也几乎没有提到。有没有更好的办法?

作为后续,为什么有时简单地取消引用(没有首先应用enquoor sym)会起作用?在下面的示例中,为什么select()按预期工作但group_by()没有?

更新:答案不是取消引用。它select更灵活,可以处理字符串,而group_by不能。

其他参考:Edwin Thoen 的这篇博文。

0 投票
1 回答
1146 浏览

r - 使用 purrr 遍历两个列表,然后通过管道进入 dplyr::filter

使用下面的示例数据,我可以创建以下函数:

然后我可以使用该函数过滤两个变量——学校和代码——如下所示:

这一切都很好,但是我的实际数据有很多变量,因此我不想在函数中不断输入“School”和“Code”变量,我想使用 tidyverse 和 purrr 包来循环两个列表(其中一个学校,一个用于代码)并将其输入过滤器。我希望输出是结果列表。

为简单起见,输入 dplyr::filter 的两个列表各只有两个值:School2 将使用 S300,School1 将使用 B344,就像上面的示例一样。

我试过的一些例子:

还...

还有这个...

这些似乎都不起作用,因此将不胜感激!

样本数据:

0 投票
1 回答
74 浏览

r - 在 tidyeval 框架中转义overscoping

如果我想明确地超出范围,我可以.data像这样使用代词

但是,相反的情况呢,即如果我想明确避免过度使用?在下面的示例中,我想添加一个包含值b(通过函数调用提供,而不是b数据中的)加 1 的新列,这显然不像现在所说的那样工作(因为范围过大)。

我还尝试在mutate()调用之外创建新值,但是我仍然需要依赖new_val不在数据中。

0 投票
1 回答
43 浏览

r - 捕获列表元素并将它们用作名称以创建列表列数据框的函数

我有以下数据框

我想建立数据框d

我想用一个函数来做到这一点

我从

问题是我想在.keynest 的参数中提供数据帧的名称(d1、d2 和d3),但我不知道该怎么做。

我想一旦我可以包含.key参数,它应该很容易left_join使用reduce.

0 投票
2 回答
1213 浏览

c++ - R中的sjPlot安装和rlang错误

我花了一整天的时间尝试安装 sjPlot,并且一直在搜索论坛 + 其他论坛,但似乎找不到解决问题的方法。本质上,当我尝试安装 sjPlot 包时,我得到以下输出:

我已经尝试安装 VGAM 和 pbkrtest,以及 rlang 和 tidyselect,但它只是说以下内容:

据我了解,最核心的包似乎是 rlang。所以我在一些线程中读到,也许我可以将 RTools 下载到我的计算机并尝试再次下载 rlang,但我似乎无法在 R 中打开 Rtools(或者它可以工作;我尝试遵循https://上的指南github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows但我无法让它工作)。

我还尝试下载 .zip 文件并在 R 中打开包;但是,这只会在我再次尝试安装 sjPlot 时导致错误(类似于“过程入口点无法位于动态链接库中......”的内容,参考 rlang 包)。

我敢肯定你会说,我很迷茫,非常感谢解决这个问题的任何帮助!不确定您需要我提供什么样的信息,但我在 Windows 8.1 上运行,他们网站上提供的 RStudio 最新版本(RStudio Desktop 1.1.419)。

我也尝试过重新安装 RStudio,寻找更新等。