代码之家  ›  专栏  ›  技术社区  ›  Laura

TIBLE的Unnest多列列表,tidyr unnes\u加宽

  •  1
  • Laura  · 技术社区  · 4 年前

    这是我的tibble:

    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)))
    

    Level , Level2 , Level3

    我正在这样做: unnest_wider(my_tibble,Level,Level2,Level3) 当然,这是行不通的。

    我该怎么做?

    0 回复  |  直到 4 年前
        1
  •  3
  •   Ashley G    4 年前

    也许与上面使用map的答案类似,但命名更简单。

    map_dfc(colnames(my_tibble), 
            ~ unnest_wider(my_tibble[.x], .x, names_sep = "."))
    
        2
  •  2
  •   akrun    4 年前

    unlist2d 具有 map

    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
    

    地图 并应用 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

    .上校,上校- 要从中提取组件的列表列。

    因此,它只是一个列,我们可以指定其中的位置,如中所示 ?unnest cols

    cols—列到unnest。