问题标签 [tidyeval]

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 投票
1 回答
73 浏览

r - 如何根据可变数量的 tidyeval 输入创建 data.frame

首先为这个有点缺乏信息的标题道歉

我有一个闪亮的应用程序,用户下载许多可能的数据集之一,并且对于某些列可以执行过滤器以生成 data.frame 输出

无论下载的数据集如何,我都想标准化代码

问题是列名因数据集而异,并且我希望过滤的列数不定

就创建输入而言,我已经使用 tidyeval 方法调整了这个解决方案。但是,我在输出时遇到了困难,而不必根据可以过滤的列数诉诸大量 if else 语句

这是一个基于数据集的(非闪亮)示例,其中我有 2 个可过滤列,一个始终需要的值列和最终输出中不需要的一列

所以这是我希望适应的最后一段代码,以考虑 my_cols 的可变长度

TIA

0 投票
1 回答
176 浏览

r - 使用 enquo 时如何测试变量类型?

问题

enquo在将自定义函数传递给dplyr链之前,我想确保我的自定义函数的参数类型正确。

我试过的

我能够将参数组合成 a然后dataframe测试每个变量的类型。但我想知道是否有一种解决方案可以在将每种类型放入之前对其进行测试?dataframe

我也试过这个,无济于事:

样本数据和样本函数

这就是我用来测试使用 enquo 评估列的一般概念的方法:

正确输出没有任何错误:(虽然我正在寻找更通用的解决方案,因为这是一个示例函数)

此外

我尝试在 Hadley 的许多资源、StackOverflow 和其他博客中搜索此内容。但我可能只是很难知道要搜索什么。如果你能指出我正确的方向,我总是愿意自己弄清楚。任何额外的资源都非常受欢迎。

提前致谢!

0 投票
1 回答
166 浏览

r - dplyr: Standard evaluation and enquo()

I heard standard evaluation is not recommended in dplyr, and we can do similar thing with enquo() and quo().

My original code (simplified) is

and it works.

I tried following code

Why it does not work? And should we keep using standard evaluation?

0 投票
1 回答
444 浏览

r - 一个简单的公式整洁评估示例

我试图从rlang. 作为一个简短的示例,我想向数据框添加一列预测。这是在 中实现的modelr,但我想直接传递公式,这样我就可以练习一些整洁的评估。

我有以下功能

上述函数有以下步骤

  1. enquo公式

  2. 用数据拟合模型并用!!

  3. 在数据上使用拟合模型进行预测

此函数用法的示例如下所示。

0 投票
2 回答
78 浏览

r - dplyr 滞后调用中意外的整洁评估行为

我有一个函数,它需要一个数据框和几个变量,我希望它使用整洁的评估原则产生一组滞后变量。在它的简单形式中,它看起来像这样:

但是,这会NA为所有滞后变量生成值。

有没有理由!!评估员不在lag通话范围内工作?他们显然在select通话中工作。

上述调用的预期行为在实践中应该像这段代码一样工作(有效):

正如预期的那样,它会产生:

0 投票
1 回答
1602 浏览

r - 使用列数不确定的 replace_na()

我的数据框如下所示:

我想使用 tidyr::replace_na() 将 NA 替换为 0。正如此函数的文档所明确指出的,一旦您知道要对哪些列执行操作,就很容易做到这一点。

但是,如果您有不确定的列数怎么办?(我说“不确定”是因为我正在尝试创建一个使用 dplyr 工具即时执行此操作的函数。)如果我没记错的话,与我使用上述工具尝试实现的基本 R 等效的是:

但我总是很难理解这段代码。在此先感谢您的帮助。

0 投票
1 回答
241 浏览

r - 以编程方式将值发送到过滤器的 tidyeval 方式

拿起较早的线程,(在 dplyr 中使用字符串作为过滤器?),新的答案将是什么,因为filter_已被弃用。

中使用字符串变量作为过滤器参数?例如:

将被替换为

0 投票
1 回答
263 浏览

r - 使用 purrr 创建一个 quosures 列表

是否可以使用 purrr 返回 quosures 列表?

返回评估的 quosures(即包含 3 到 5 的列表)。

有没有办法返回包含 quo(1 + 2)、quo (2 + 2) 等的列表?

(如果重要的软件包版本或将来访问:purrr 0.2.5,rlang 0.2.1)。

0 投票
2 回答
559 浏览

r - dplyr() 中的非标准评估和 quasiquotation 未按(天真)预期工作

我正在尝试搜索数据库,然后"derived_name"在下面的可重现示例中使用源自原始搜索的名称标记输出。我正在使用dplyr管道%>%,并且在进行准报价和/或非标准评估时遇到了麻烦。具体来说,在最终函数中使用count_colname派生自 的字符对象无法对数据帧进行子集化。"derived_name"top_n()

基于这个讨论,我认为上面的代码可以工作。而这篇文章引导我尝试top_n_(),这似乎不存在。

我正在学习vignette("programming")这有点过头了。这篇文章让我尝试了!! sym()有效的语法,但我不知道为什么!帮助理解为什么下面的代码工作将不胜感激。谢谢。

基于@lionel 和@Tung 下面的问题和评论的其他令人困惑的示例。这里让我感到困惑的是,帮助文件说sym()“将字符串作为输入并将它们转换为符号”和!!“取消引用它的参数”。但是,在下面的示例中,sym(count_colname)似乎取消引用derived_name_letr_count. 我不明白为什么!!需要 in !! sym(count_colname),因为sym(count_colname)qq_show(!! sym(count_colname))给出相同的值。

0 投票
3 回答
570 浏览

r - Using as.formula with a comma

I'd like to get conditions dynamically from the user, so I built a shiny app that gets them from an input field. Problem is that as.formula doesn't work for a character vector with a comma (without it works fine).

Code:

#xA;

I get:

Evaluation error: :2:100: unexpected ','

I have tried using paste and escaping the comma with no success.