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

r - 整洁的评估:无效的参数错误

我正在根据这篇文章进行整洁的评估:http: //dplyr.tidyverse.org/articles/programming.html

这个演示文稿: https ://speakerdeck.com/hadley/tidy-evaluation-programming-with-ggplot2-and-dplyr

运行文章中的一些代码,我收到无效的参数错误。这是我跑的:

此代码应该返回

相反,我得到:mutate_impl(.data, dots) 中的错误:无效的参数类型

其他有此错误的代码,我认为可以工作:

我再次得到:mutate_impl(.data, dots) 中的错误:无效的参数类型

我试过用 quo() 替换我的 enquo() 以及其他一些东西,但我不知道我做错了什么。要么我遗漏了一些东西,要么此代码无法按照文章和演示文稿中的说明工作。提前感谢您的帮助!

0 投票
2 回答
4118 浏览

r - R:使用字符串作为参数来改变 dplyr 中的动词

我正在构建一个闪亮的应用程序,它需要允许用户定义新的绘图变量。具体来说,我希望允许用户定义要在 mutate 动词中使用的表达式。服务器以文本形式接收表达式,我想知道如何使 mutate 在 dplyr 0.7 中执行它。我可以使用 mutate_ 使其(部分)工作,但现在已弃用。它还将新列名定义为整个表达式而不是新变量

这是一个可重现的示例:

这给出了以下

从技术上讲,我可以使用正则表达式从字符串中提取新变量名并相应地重命名新列,但我想知道使用最新 dplyr 版本实现它的正确方法是什么(正在阅读https://cran.r-project .org/web/packages/dplyr/vignettes/programming.html,但无法弄清楚)

0 投票
2 回答
95 浏览

r - 不在 dplyr tidyeval 中时抛出错误

我正在使用dplyr并尝试整洁的评估。我对如何检查以确保有人放入裸对象而不是 NSE 字符串感到困惑。例如,我想过滤非缺失数据:


如果可能,我希望字符串等效于失败。这目前给出了“错误”的结果,因为is.na("myvar")它绝不是 FALSE。

在查看了使用 dplyr::filter 的 tidyeval 方式是什么之后?,似乎filter_at这两种情况都可以正常工作:

但是有没有myfun("myvar")失败的方法?我不能使用colnames()and if 语句作为未引用的表达式,除非使用as.name.

0 投票
1 回答
699 浏览

r - dplyr .data 代词与“quosure”方法

dplyr v0.7.0中,.data引入了代词,允许我们使用字符串来引用变量。我只是好奇这种方法是否比“quosure”方法更受欢迎。例如,这是一种使用.data代词的方法:

这与使用以下方法的示例进行了比较quosure

两种方法产生相同的输出:

有什么真正的区别吗?两种方法的优缺点是什么?

0 投票
0 回答
69 浏览

r - 用 tidyeval 着色

我正在尝试使用一些 tidyeval 功能创建一个情节条形图。我已经成功创建了一个简单的条形图,但似乎无法制作一个按属性着色的堆叠条形图。已经坚持了一段时间,似乎无法弄清楚错误在说什么。任何帮助表示赞赏,谢谢!

如果我注释掉颜色线,该功能可以工作,所以我很确定这是导致错误的原因,但似乎无法理解原因。

0 投票
4 回答
4221 浏览

r - 为什么是 enquo + !! 最好替代 + eval

在下面的例子中,为什么我们应该赞成使用f1over f2?在某种意义上它更有效吗?对于习惯使用 R 的人来说,使用“替代 + eval”选项似乎更自然。

换句话说,除了这个特定的例子之外,我的问题是:我能否摆脱使用dplyrNSE 函数和像替代 + eval 这样的良好 ol' 基础 R 的编程,或者我真的需要学会喜欢所有这些rlang函数,因为有对它有什么好处(速度、清晰度、组合性……)?

0 投票
2 回答
229 浏览

r - 如何通过带引号的表达式将变量传递给使用该值返回函数的函数?

这是一个例子:

该函数在这样的环境之外可以正常工作,但是为了将它与 一起使用ggplot,它必须以一种或另一种方式引用。

不幸的是,我无法弄清楚如何正确返回包含以这种方式传递的变量的生成函数。我试过这个:

但是当我这样做时出现错误:Error in !n : invalid argument type

有谁知道如何正确使用n返回的函数中的期望值custom_percent()

在有人问之前,我知道我可以事先在摘要数据框中生成统计数据用作utils::getAnywhere()解决方法,但这不是问题的重点。

0 投票
1 回答
482 浏览

r - 将 dplyr::quos() 与列表参数而不是省略号参数一起使用

我正在使用 dplyr 并尝试创建一个函数来根据分组参数计算 p.values。我希望能够有一个参数,该参数是要分组的任意长度变量的列表。这是示例数据集:

这是我使用的功能...

我希望能够用一个参数(例如 group_vars)替换 ... 并像这样调用它:

这似乎不适用于 quos() 但我不明白为什么。能够使用多个独立使用的列表参数会很好(例如,创建一个参数“arrange.by”,它将是一个变量列表,以传递给函数末尾的排列。

我非常感谢任何帮助理解为什么这不起作用以及我可以做什么!

0 投票
2 回答
133 浏览

r - 使用 map2() 生成具有不同列名的小标题

我有一个名称字符向量和一个数字向量列表。我想创建一个包含一列的小标题,其中列名来自字符向量,并且应该用数字向量中的值填充。

这是我尝试过的一个最小示例:

当我运行它时,我得到一个invalid argument type错误。据我了解(以及我尝试过的),我不能简单地使用namesas .x。然后列名将.x代替col1or col2。通过使用syms和取消引用表达式,我尝试将字符元素转换names为我认为需要的名称。

编辑:建议解决方案的基准:

两种建议的解决方案都运行良好且易于阅读。因此,我进行了一个小型基准测试来帮助我选择接受哪种解决方案。(接受的)解决方案使用!!更快且更短。

0 投票
1 回答
1245 浏览

r - dplyr 根据向量中的名称对多列进行变异

dplyr's mutate我想通过使用函数 将两列相乘。

但是,我不想为每个变异条件写一个新行,而是使用存储在向量中的列的名称var1var2. 例如,最后我想在我现有bankdata的列中添加一个附加列,result1其中包含通过将列现金和贷款相互相乘的结果。这将一直持续到创建了 3 个新列。

可重现的代码:

向量var1var2包含我要相乘的列名 ( cash*loans, bond*cash, loans*bankid),输出是新列的名称:

我想做类似这样的事情: