【发布时间】:2018-09-09 20:52:25
【问题描述】:
在下面的示例中,我有一个列表,其中一个元素是带有子列表的列表。 as_tibble() 似乎正在变平,直到列表的第 3 级才停止。能够控制展平会很好,这样我就可以在示例的元素"c" 中保留整个列表和子列表。我怀疑需要map()、flatten() 等的某种组合,但无法弄清楚。
问题转载
as_tibble() 返回 2 行,但我真的只想要 1 行,其中一列对应于每个列表元素(“a”、“b”、“c”)。
library(dplyr)
x <- list(a = 1,
b = 2,
c = list(x=list(y=3,
z=4),
xx=NULL))
parsed <- as_tibble(x)
parsed
#> # A tibble: 2 x 3
#> a b c
#> <dbl> <dbl> <list>
#> 1 1. 2. <list [2]>
#> 2 1. 2. <NULL>
parsed[1,]$c
#> $x
#> $x$y
#> [1] 3
#> $x$z
#> [1] 4
parsed[2,]$c
#> $xx
#> NULL
我只取消第一级的期望行为
parsed <- as_tibble(x)
parsed
#> # A tibble: 1 x 3
#> a b c
#> <dbl> <dbl> <list>
#> 1 1. 2. <list [2]>
parsed[1,]$c
#> $x
#> $x$y
#> [1] 3
#> $x$z
#> [1] 4
#> $xx
#> NULL
【问题讨论】:
标签: r dplyr tidyr purrr tibble