R 如何获得分组变量和可绑定函数(可能是组嵌套)?

R 如何获得分组变量和可绑定函数(可能是组嵌套)?,r,dplyr,R,Dplyr,假设我有以下代码: df <- data.frame(a=c(1,2,3), b=c(4,5,6), c=c(7,8,9)) func <- function(...) { the_args <- list(...) data <- the_args[[1]] message(names(data)) } 我希望调用func三次(a的每个不同值调用一次),每次调用三列(a、b、c) 建议 编辑:如果我提前知道分组,我可以提前硬编码: df %>% g

假设我有以下代码:

df <- data.frame(a=c(1,2,3), b=c(4,5,6), c=c(7,8,9))

func <- function(...) {
  the_args <- list(...)
  data <- the_args[[1]]
  message(names(data))
}
我希望调用
func
三次(a的每个不同值调用一次),每次调用三列(a、b、c)

建议

编辑:如果我提前知道分组,我可以提前硬编码:

df %>% group_nest(a) %>% mutate(result=map(data, func, a))

在函数内部,我可以设置
a,对于最简单的情况,您可以

df %>% group_nest(a_ = a)
正如OP所指出的,您还可以在更一般的情况下使用变量

df %>% group_nest(foo = across(all_of(grouping_cols)))
另一种选择是

df %>% 
  mutate(across(!!grouping_cols, `(`, .names = "{.col}_")) %>%
  group_nest(across(paste0(grouping_cols, "_"))

为什么不干脆
df%>%group\u nest(a=a)
?天哪,这似乎奏效了!在实际情况中,tho,我实际上是将
grouping\u cols
作为变量传入,以使其成为一个实用函数。有没有更普遍的方法?我想我可以问一个关于函数和分组的更复杂的问题。那么
df%>%mutate(跨(!!分组,`(`,.names=“{.col}”))%%>%group\u nest(跨粘贴0(分组,”)
)怎么样?我想这可能也行得通:
df%>%group\u nest(foo=cross(全部分组)))
?我必须对其进行更彻底的测试。如果您将其作为答案提交,我将接受。
df %>% group_nest(foo = across(all_of(grouping_cols)))
df %>% 
  mutate(across(!!grouping_cols, `(`, .names = "{.col}_")) %>%
  group_nest(across(paste0(grouping_cols, "_"))