使用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