1

在嵌套的 tibble 中,我想data通过以字符串向量 ( vars) 给出的变量对列表列(在下面的示例中)中的 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)))
                       )
  )

我哪里错了?

4

1 回答 1

2

您可以在group_by. 在这里你可以使用all_of(或any_of取决于你想要什么):

 toydata %>%
  dplyr::mutate(
    data = purrr::map2(
      data, vars, ~dplyr::group_by(.x, across(all_of(unlist(.y))))
    )
  )
于 2021-12-01T07:54:59.137 回答