使用 tidyr unnes_wider 从 tibble 取消嵌套多个 columns-list

Unnest multiple columns-list from tibble with tidyr unnes_wider

这是我的小标题:

my_tibble<-tibble(Level = list(c(10,20),c(10,20)),Level2 = list(c(30,40),c(50,20)),Level3 = list(c(330,430),c(530,33)))

我想使用 unnest_wider 取消嵌套所有列:LevelLevel2Level3.

我正在这样做:unnest_wider(my_tibble,Level,Level2,Level3)当然没有用。

我该怎么做?

我们可以使用 unlist2dmap

library(purrr)
library(collapse)
map_dfc(my_tibble, ~ unlist2d(.x) %>% 
        select(-1)) %>%
     set_names(paste0(rep(names(my_tibble), each = 2), "_", 1:2))

-输出

#    Level_1 Level_2 Level2_1 Level2_2 Level3_1 Level3_2
#1      10      20       30       40      330      430
#2      10      20       50       20      530       33

或遍历 map 中的数据名称并应用 unnest_wider

library(tidyr)
map_dfc(names(my_tibble), 
     ~ my_tibble %>% 
          select(.x) %>%
         unnest_wider(.x)) %>%
  set_names(paste0(rep(names(my_tibble), each = 2), "_", 1:2))

根据 ?unnest_wider

的文档

.col, col - List-column to extract components from.

所以,它只是一个单独的列,我们可以在 ?unnest 中指定它是 cols

cols - Columns to unnest.

可能类似于上面使用 map 的答案,但更容易命名。

map_dfc(colnames(my_tibble), 
        ~ unnest_wider(my_tibble[.x], .x, names_sep = "."))