我经常遇到嵌套在数据框列中的许多列表,但是当可能将嵌套元素强制转换为与父元素具有相同行数的数据框时,我没有看到任何通用方法来将其展平。考虑以下这些嵌套的示例:
require(dplyr)
data_frame(a=1:3, b = c('a','b','c'), c = list('cats','dogs','birds'))
#> # A tibble: 3 x 3
#> a b c
#> <int> <chr> <list>
#> 1 1 a <chr [1]>
#> 2 2 b <chr [1]>
#> 3 3 c <chr [1]>
data_frame(a=1:3, b = c('a','b','c'), c = list(iris[1:3,]))
#> # A tibble: 3 x 3
#> a b c
#> <int> <chr> <list>
#> 1 1 a <data.frame [3 x 5]>
#> 2 2 b <data.frame [3 x 5]>
#> 3 3 c <data.frame [3 x 5]>
data_frame(a=1:3, b = c('a','b','c'), c = list(iris[1,], iris[2,], iris[3,]))
#> # A tibble: 3 x 3
#> a b c
#> <int> <chr> <list>
#> 1 1 a <data.frame [1 x 5]>
#> 2 2 b <data.frame [1 x 5]>
#> 3 3 c <data.frame [1 x 5]>
有一种优雅的通用方法可以将这些数据压平吗?我发现最接近的方法是使用jsonlite::flatten
,它声称可以"压平嵌套数据框",但似乎无法处理像这些例子中那样嵌套的列表。