r-通过嵌套tibble中作为字符串向量给定的变量对tibble进行分组



在嵌套的tibble中,我想将列表列中的tibble(以下示例中为data(按字符串向量(vars(形式的变量分组。

toydata <- tibble::tibble(
vars = list(
list("x"), 
list(c("x", "y"))
),
data = list(
tibble::tibble(
x = c(1,1,2,2),
y = c(1,1,1,2)
),
tibble::tibble(
x = c(1,1,2,2),
y = c(1,1,1,2)
)
)
)

这项工作:

purrr::map2(toydata$data, 
toydata$vars, 
~ dplyr::group_by(.x, !!!rlang::syms(unlist(.y)))
)

但这两项都不起作用:

toydata %>%
dplyr::mutate(
data = purrr::map2(toydata$data, 
toydata$vars, 
~ dplyr::group_by(.x, !!!rlang::syms(unlist(.y)))
)
)
toydata %>%
dplyr::mutate(
data = purrr::map2(data, 
vars, 
~ dplyr::group_by(.x, !!!rlang::syms(unlist(.y)))
)
)

我哪里错了?

您可以在group_by中使用整洁的选择动词。在这里,您可以使用all_of(或any_of,具体取决于您想要什么(:

toydata %>%
dplyr::mutate(
data = purrr::map2(
data, vars, ~dplyr::group_by(.x, across(all_of(unlist(.y))))
)
)

最新更新