使用enframe from{tibble}将tibble中的列表列转换为多列

使用enframe from{tibble}将tibble中的列表列转换为多列,r,tibble,R,Tibble,我有以下清单 my_list <- list(`3920_0` = structure(c(623700, 96400), .Dim = 1:2, .Dimnames = list("1", c("X", "Y"))), `3864_0` = structure(c(665100, 167400), .Dim = 1:2, .Dimnames = list("1", c(&q

我有以下清单

my_list <- list(`3920_0` = structure(c(623700, 96400),  .Dim = 1:2, .Dimnames = list("1", c("X", "Y"))), 
                `3864_0` = structure(c(665100, 167400), .Dim = 1:2, .Dimnames = list("1", c("X", "Y"))), 
                `1948_1` = structure(c(589800, 97900),  .Dim = 1:2, .Dimnames = list("1", c("X", "Y"))))
当我使用
enframe
时,我得到以下信息

# A tibble: 3 x 2
  name   value            
  <chr>  <list>           
1 3920_0 <dbl[,2] [1 x 2]>
2 3864_0 <dbl[,2] [1 x 2]>
3 1948_1 <dbl[,2] [1 x 2]>
#一个tible:3 x 2
名称值
1 3920_0 
2 3864_0 
3 1948_1 
这几乎就是我想要的,但是我想将“value”列中的列表“拆分”为两列“X”和“Y”


或者,是否有更好的解决方案来实现没有enframe()的最终表格?

您可以在
enframe
之后使用
unnest\u wide

my_list %>%
  tibble::enframe() %>%
  tidyr::unnest_wider(value, names_repair = ~c('name','x', 'y'))

#  name        x      y
#  <chr>   <dbl>  <dbl>
#1 3920_0 623700  96400
#2 3864_0 665100 167400
#3 1948_1 589800  97900

您可以在
enframe
之后使用
unnest\u-wide

my_list %>%
  tibble::enframe() %>%
  tidyr::unnest_wider(value, names_repair = ~c('name','x', 'y'))

#  name        x      y
#  <chr>   <dbl>  <dbl>
#1 3920_0 623700  96400
#2 3864_0 665100 167400
#3 1948_1 589800  97900

在列表中包含数据帧有助于在绑定时使用输出结构。所以

dplyr::bind_rows(lapply(my_list, data.frame), .id = 'id')

#          id      X      Y
#1...1 3920_0 623700  96400
#1...2 3864_0 665100 167400
#1...3 1948_1 589800  97900

在列表中包含数据帧有助于在绑定时使用输出结构。所以

dplyr::bind_rows(lapply(my_list, data.frame), .id = 'id')

#          id      X      Y
#1...1 3920_0 623700  96400
#1...2 3864_0 665100 167400
#1...3 1948_1 589800  97900
另一个选项使用:

另一个选项使用:


我们还可以转换为tibble,并将它们绑定在一起

library(purrr)
library(tibble)
map_dfr(my_list, as_tibble, .id = 'name')
# A tibble: 3 x 3
#  name        X      Y
#  <chr>   <dbl>  <dbl>
#1 3920_0 623700  96400
#2 3864_0 665100 167400
#3 1948_1 589800  97900
库(purrr)
图书馆(tibble)
map_-dfr(我的_列表,作为_-tible,.id='name')
#一个tibble:3x3
#名称X Y
#       
#1 3920_0 623700  96400
#2 3864_0 665100 167400
#3 1948_1 589800  97900

我们还可以转换为
tibble
并将它们绑定在一起

library(purrr)
library(tibble)
map_dfr(my_list, as_tibble, .id = 'name')
# A tibble: 3 x 3
#  name        X      Y
#  <chr>   <dbl>  <dbl>
#1 3920_0 623700  96400
#2 3864_0 665100 167400
#3 1948_1 589800  97900
库(purrr)
图书馆(tibble)
map_-dfr(我的_列表,作为_-tible,.id='name')
#一个tibble:3x3
#名称X Y
#       
#1 3920_0 623700  96400
#2 3864_0 665100 167400
#3 1948_1 589800  97900