如何解决使用带有 tidy-select 的符号列表
在我们的数据聚合管道中,我们有一堆用于定义组的条件变量。为了提高代码的可读性和可维护性,我们使用了一个预配置的符号列表,并按照以下说明性代码段进行了整洁的评估:
# this is the list of our condition variables
condition_vars <- rlang::exprs(var1,var2,var3)
# split the data into groups
data %>% group_by(!!!condition_vars) %>% summarize(...)
这很好用,但我不知道在 <tidy-select>
上下文中使用它的优雅方式是什么,例如对于诸如 nest
之类的东西。问题是新的 nest()
需要类似 nest(data = c(var1,var3))
而不是 nest(var1,var3)
,所以 nest(!!!condition_vars)
会给我一个警告。
我能想到的最好的是
df <- tibble(x = c(1,1,2,3),y = 1:6,z = 6:1)
vars <- exprs(y,z)
nest(df,data = !!call2("c",!!!vars))
但肯定有更好的方法......
解决方法
你可以做nest(df,data = c(!!!vars))
。
但是现在,如果表达式是简单的列名,我会将它们存储在字符向量中。您可以在选择上下文中使用 all_of()
提供字符向量。在 mutate()
或 group_by()
等动作动词中,使用 across()
创建一个选择上下文,您可以在其中使用 all_of()
(以及 starts_with()
等其他功能)。>
cols <- c("cyl","am")
mtcars %>% group_by(across(all_of(cols))
mtcars %>% nest(data = all_of(cols))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。