按嵌套 tibble 中作为字符串向量给出的变量对 tibble 进行分组
Posted
技术标签:
【中文标题】按嵌套 tibble 中作为字符串向量给出的变量对 tibble 进行分组【英文标题】:Group tibbles by variables given as string vectors in a nested tibble 【发布时间】:2022-01-07 19:41:49 【问题描述】:在嵌套的 tibble 中,我想通过以字符串向量 (vars
) 形式给出的变量对列表列中的 tibbles 进行分组(在下面的示例中为 data
)。
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)))
)
)
我哪里错了?
【问题讨论】:
【参考方案1】:您可以在group_by
中使用整齐选择动词。在这里你可以使用all_of
(或any_of
,取决于你想要什么):
toydata %>%
dplyr::mutate(
data = purrr::map2(
data, vars, ~dplyr::group_by(.x, across(all_of(unlist(.y))))
)
)
【讨论】:
非常感谢!我没有想出在group_by
中使用across
。以上是关于按嵌套 tibble 中作为字符串向量给出的变量对 tibble 进行分组的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用dplyr包的select函数基于字符串向量vector中的字段名称筛选dataframe或者tibble中的数据( Select varibales)
在 tibble 中的嵌套级别之间移动:如何引用存储在嵌套层次结构的上层中的数据