【发布时间】:2020-09-28 08:36:27
【问题描述】:
之前,我使用group_by_at 按字符串向量或NULL 进行分组:
library(tidyverse)
grouping_1 <- c("cyl", "vs")
grouping_2 <- NULL
mtcars %>% group_by_at(grouping_1)
mtcars %>% group_by_at(grouping_2)
group_by_at 的帮助表示该功能已被取代,应使用across 代替。但是,按 NULL 分组会报错
mtcars %>% group_by(across(grouping_1)) # this works
mtcars %>% group_by(across(grouping_2)) # this gives an error
对我来说,以上述方式使用的group_by_at 很有用,因为在我的函数中,我可以使用相同的代码,而无需每次都检查分组参数是否为空 (NULL)。
【问题讨论】:
-
来自
across文档:across()可以轻松地将相同的转换应用于多个列,允许您在summarise()和mutate()中使用select()语义。因此,我不确定您是否可以在group_by语句中使用across.. -
如果来自 group_by_all 的文档:“作用域动词 (_if, _at, _all) 已被现有动词中的 cross() 使用所取代。有关详细信息,请参阅 vignette("colwise") 。”
-
所有在 group_by_all 帮助下的例子都是用cross来替换被取代的函数的例子。
-
你是对的,我没有检查函数
group_by_all。谢谢你让我注意到它