首页 > 解决方案 > 取消列出并为每个列表元素和每个值创建编号

问题描述

我有一个这样的列表:

mylist <- list(c("A", "B", "C"), c("D", "E"), "F")
mylist

[[1]]
[1] "A" "B" "C"

[[2]]
[1] "D" "E"

[[3]]
[1] "F"

我希望将列表转换为如下所示的数据框。我知道如何使用unlist. 但我还想要一列,每个列表元素(“列表”)都有一个数字,每个列表元素(“id”)中的每个值都有一个数字:

描述 列表 ID
一种 1 1
1 2
C 1 3
D 2 1
2 2
F 3 1

标签: rlist

解决方案


这是使用stack+的基本 R 选项ave

type.convert(
  transform(
    setNames(
      stack(setNames(mylist, seq_along(mylist))),
      c("Desc", "List")
    ),
    id = ave(seq_along(unlist(mylist)), List, FUN = seq_along)
  ),
  as.is = TRUE
)

这使

  Desc List id
1    A    1  1
2    B    1  2
3    C    1  3
4    D    2  1
5    E    2  2
6    F    3  1

数据

mylist <- list(c("A", "B", "C"), c("D", "E"), "F")

推荐阅读