按嵌套小标题中作为字符串向量给出的变量对小标题进行分组
Group tibbles by variables given as string vectors in a nested tibble
在嵌套的 tibble 中,我想通过作为字符串向量 (vars
) 给出的变量对 list-column(下例中的 data
)中的 tibble 进行分组。
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
中使用 tidy-select 动词。在这里你可以使用 all_of
(或 any_of
取决于你想要什么):
toydata %>%
dplyr::mutate(
data = purrr::map2(
data, vars, ~dplyr::group_by(.x, across(all_of(unlist(.y))))
)
)
在嵌套的 tibble 中,我想通过作为字符串向量 (vars
) 给出的变量对 list-column(下例中的 data
)中的 tibble 进行分组。
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
中使用 tidy-select 动词。在这里你可以使用 all_of
(或 any_of
取决于你想要什么):
toydata %>%
dplyr::mutate(
data = purrr::map2(
data, vars, ~dplyr::group_by(.x, across(all_of(unlist(.y))))
)
)