r - 在 R 中为管道中的多个操作枚举变量时 DRY

标签 r coding-style dry tidyverse

我想知道是否有一种 DRY 方式来编写以下管道:

library(tidyverse)
data(iris)
iris %>% arrange(Sepal.Width, Species) %>% select(Sepal.Width, Species)

这非常有效,但如果需要更改代码,我有两个地方需要编辑。

有没有办法重写代码,使变量在管道中只列出一次?

我希望有一种方法可以存储变量列表 v 然后调用:

iris %>% arrange(v) %>% select(v)

我尝试使用quoteSymNon Standard Evaluation 的许多其他功能为了存储变量列表无济于事。


所有这些答案对这个问题都没有帮助:

r - how to use a variable in a variable

Using a variable to refer to another variable in R?

R expression variable list

r - how to use a variable in a variable

最佳答案

我想你要找的是:

library(tidyverse)
vars <- quos(Sepal.Width, Species)

iris %>% arrange(!!!vars) %>% select(!!!vars)

我假设你的意思是 select 而不是 filter 因为 iris %>% arrange(Sepal.Width, Species) %>% filter( Sepal.Width, Species) 抛出错误

关于r - 在 R 中为管道中的多个操作枚举变量时 DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53454013/

相关文章:

javascript - 帮助我优化 JavaScript 中的 if else (jQuery)

java - Java构造函数中的长参数列表

java - 使用静态私有(private)方法真的比实例私有(private)方法更快/更好吗?

c# - 如何避免在 .NET 中为不同的数字类型编写重复代码

python - Django 中的可重用模态成员

R:为什么 mco 的 nsga2 函数的优化解决方案不满足约束?

r - 如何使用facet_wrap从行更改为列主要顺序?

r - 根据首次注册和最近值转换 NA 值

r - 如何在knitr中创建部分和新线

html - 在 JSP/Servlet 中创建可重用但灵活的表单组件的正确方法是什么?