r - 如何将嵌套列表分解为数据框,其中每个嵌入列表成为单独的列?

标签 r dataframe

我的目标是采用这样的嵌套列表:

list1 <- list(1,2,3,4,5)
list2 <- list(6,7,8,9,10)
list3 <- list(11,12,13,14,15)

nested_list <- list(list1, list2, list3)

并创建一个数据框,其中列数 = 嵌套列表中嵌入的列表数。换句话说,我试图将 list1、list2 和 list3 全部放入数据框的单独列中。

我尝试过使用 tidyr 中的一些函数,例如“unnest_wider”,但运气不佳。大多数函数都是为了将​​每个嵌套列表转换为观察(行)而不是列。我知道我可以运行某种循环来执行此操作,但这种方法不是很有效。

最佳答案

如果您使用任何 data.frame 查看 unclass(df),您可以看到(尽管有属性)一个 data.frame > 基本上已经有了你所拥有的数据结构。知道这一点后,我们只需取消列出列表中的列表即可。

一句话:

as.data.frame(lapply(nested_list, unlist))
#>   c.1..2..3..4..5. c.6..7..8..9..10. c.11..12..13..14..15.
#> 1                1                 6                    11
#> 2                2                 7                    12
#> 3                3                 8                    13
#> 4                4                 9                    14
#> 5                5                10                    15

或者使用tidyverse:

library(tidyverse)
as_tibble(nested_list, .name_repair = "universal") %>% 
  unnest(everything())
#> New names:
#> * `` -> ...1
#> * `` -> ...2
#> * `` -> ...3
#> # A tibble: 5 x 3
#>    ...1  ...2  ...3
#>   <dbl> <dbl> <dbl>
#> 1     1     6    11
#> 2     2     7    12
#> 3     3     8    13
#> 4     4     9    14
#> 5     5    10    15

列名困惑的原因是列表元素没有名称。如果它们有名称,您会看到它们在两个解决方案中都成为列名称。

关于r - 如何将嵌套列表分解为数据框,其中每个嵌入列表成为单独的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60437087/

相关文章:

python - 有没有更有效的方法来生成这个数据框?

python - Pandas:将数据帧的内容合并到单个列中(作为 dict/json 列表)

r - 如何从 R 中的相关双变量分布生成数字?

r - R : table vs == 中的数据一致性

在 R 中使用多线程运行 shell 脚本

R:如何将数据框附加到列表中?

python - 将 pandas 数据框从宽转为长

浏览器中的 RStudio "next line"命令()不起作用

R:根据另一列从行中减去值

list - 如何从数据框列表中组合多个箱线图?