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

r - 使用 dplyr 和 group_by 编写自己的函数 - 如何继续更改列名

我想制作表格以给出观察次数,按两个变量分组。这个代码工作正常。但是,在尝试将其转换为函数时遇到了问题。

我正在使用 dplyr_0.7.2

使用 mtcars 的示例:

函数外表的代码:这有效

试图把它放到一个函数中

tab1 的功能:这有效

tab2 的第一部分的功能:到目前为止它可以工作,但是......

列名已更改为 (cyl) 和 (gear)。既然列名已更改,我似乎无法弄清楚如何继续使用 spread() 和 full_join() (或使用新列名的任何其他内容)。即我不知道如何以 tidyeval 方式指定新的列名,以便能够继续。我尝试了各种事情,但没有成功。

0 投票
5 回答
2915 浏览

r - 将函数参数传递给 dplyr 和 ggplot

我对如何将函数参数传递给 dplyr 和 ggplot 代码感到困惑。我正在使用最新版本的 dplyr 和 ggplot2 这是我生成条形图的代码(清晰度与平均价格)

错误:

对于最新版本的 dplyr,下划线的 verbs_() 已被轻柔地弃用。看来我们应该使用quosures。

我的问题:

  • 有人可以澄清目前的最佳做法吗?
  • 上面的代码有什么问题?(请不要使用下划线 dplyr 动词..)

  • 在 ggplot 中,我知道我们可以使用 aes_string(),但在我的例子中,aes 中只有一个参数是从函数参数传递的。

提前致谢。

0 投票
1 回答
732 浏览

r - 使用 tidyeval 在 map2 内部取消引用

我正在创建一个计算“运行”次数或丢失或完整数据的函数 - 我希望它可以使用dplyr::group_by,所以我将其编写为 S3 方法 - 下面是此代码的简化示例。

不幸的是,我发现裸露的未加引号的变量名不起作用,但引用它,这确实有效,很奇怪。

下面是输出示例

0 投票
4 回答
778 浏览

r - dplyr 0.7 tidy eval:将字符变量转换为因子

我有一个包含许多变量的数据集,其中一些是字符变量,我想将其转换为因子。由于要转换的变量很多,我想使用来自dplyr_0.7. 这是我的数据中的一个最小示例:

我有一个命名列表,其中包含data.frame我要转换的每个变量。列表中的这些data.frames 都具有相同的结构,可以在此示例中看到:


不想做的是为每个变量定义这样的因素:


到目前为止,我已经尝试过以下内容:

第一步,我想convert_factors()通过调用convert_factors("factor1", data)which 返回来检查我的函数是否正常工作

该变量不显示值标签,而是被替换为NA

最终目标是对map我想要转换的所有变量。在这里,我试过map(c("factor1", "factor2"), convert_factors, df = data)了,它返回了

(function (x, strict = TRUE) 中的错误:参数已被评估

我尝试按照http://dplyr.tidyverse.org/articles/programming.html的说明进行操作,但这就是我想出的全部。

有谁知道问题出在哪里(并希望向我解释我的错误)。

0 投票
2 回答
697 浏览

r - 如何以编程方式过滤 dplyr 中的列?

如果在调用函数之前我不想指定列,我将如何创建一个在列中删除 NA 值的函数?

第一个打印语句的输出是:

第二个打印语句的输出是:

如何让第二个打印语句与第一个相匹配?

0 投票
2 回答
1440 浏览

r - 带有数据框和变量参数的 lapply 函数

我有一个总结变量的自定义函数。我简化了函数来说明我的问题,即它比下面显示的更复杂。请注意,函数的一般结构应该保持不变:它需要一个参数来指定要在哪个数据帧上工作 ( df),以及一个参数来总结哪个变量 ( variable_to_test)。

使用示例,我可以将函数应用于数据框中的每个变量:

但是:如何列出在数据框中的所有列上应用该函数?我试过了

但这会返回错误。我正在努力解决该函数为要处理的数据框和要汇总的变量的参数这一事实。请注意,我想保留这个结构——我发现将数据框的名称传递给函数而不是仅仅给函数提供变量名并将数据框“硬编码”到函数体中更优雅。有人知道如何使用lapply()该功能吗?

0 投票
1 回答
940 浏览

r - 使用 tidyeval tidyr 排除而不是包含收集变量

如果我想排除一些“聚集”的列(Ozone, Day, Month),我可以这样做:

tidyr::gather(airquality, key, value, -Ozone, -Day, -Month)

但是在一个函数中,我不清楚如何做到这一点。这似乎很笨拙,尽管它有效:

知道如何以更严格的方式排除列吗?

注意:这是tidyr0.7.0

0 投票
2 回答
1891 浏览

r - 如何将 ggplot 和 dplyr 组合成一个函数?

考虑这个简单的例子

在这里,我想编写一个将数据框和分组变量作为输入的函数。理想情况下,在分组和汇总之后,我想打印一张ggpplot图表。

这有效:

不幸的是,添加ggplot到上面的函数FAILS

我不明白这里有什么问题。有任何想法吗?谢谢!

编辑:有趣的后续行动如何使用 ggplot 和 dplyr 从函数中的 quosures 创建因子变量?

0 投票
2 回答
91 浏览

r - 您如何使用非标准评估指定函数中可能的参数状态?

我正在学习使用tidy评估和非标准评估进行编程,并且一直在尝试解决如何限制函数中参数的可能状态。

例如给定一个数据集:

我可以创建一个函数,该函数有一个参数,我使用这样的 quosure 对数据进行分组:

这就是我想要的

我可以提供不同的组:

但是,我不能按数据中不存在的列进行分组。

例如

grouped_df_impl(data, unname(vars), drop) 中的错误:列GROUP_THREE未知

我想在函数的开头添加一个步骤,以便在 group 参数不是 GROUP_ONE 或 GROUP_TWO 时函数停止并显示自定义错误消息

就像是:

除非这不起作用,因为您显然不能将 quosures 放入向量中。应该可以以某种方式将 quosure 转换为字符串并具有字符串向量,但我不知道如何。

这是怎么做到的?

0 投票
1 回答
650 浏览

r - 如何在循环中使用 tidyeval 函数?

考虑这个简单的例子

这个tidyeval函数用于dplyr根据某些输入列聚合我的数据框。

现在,这有效

但在循环中做同样的事情失败

这里有什么问题?如何tidyeval在循环中使用我的函数?

谢谢!