将具有不等长度元素的列表转换为两列数据框

Max*_*x F 4 r list dataframe dplyr

我有一个包含 3 个元素的列表,每个元素都有不同的值集和数量。我想把这个列表变成一个简单的两列数据框。

第一列是列表元素的值,第二列是列表元素本身的名称。

myList <- list(A = c(1,2,3),
               B = c(10,20,30,40),
               C = c(100,200,300,400,500))
Run Code Online (Sandbox Code Playgroud)

所以理想的结果是这样的:

Value     List
1         A
2         A
10        B
100       C
......
Run Code Online (Sandbox Code Playgroud)

所以我知道我可以通过一系列 rbind 来做到这一点:

df <-   data.frame(Value = myList[[A]],cluster = A) %>%
  rbind(data.frame(Value = myList[[B]],cluster = B)) %>%
  rbind(data.frame(Value = myList[[C]],cluster = C))
Run Code Online (Sandbox Code Playgroud)

我可能可以用循环或 lapply 来清理它......但似乎应该有一种更简单的方法来实现它!

akr*_*run 6

我们可以使用stack来自base R

stack(myList)
Run Code Online (Sandbox Code Playgroud)

-输出

   values ind
1       1   A
2       2   A
3       3   A
4      10   B
5      20   B
6      30   B
7      40   B
8     100   C
9     200   C
10    300   C
11    400   C
12    500   C
Run Code Online (Sandbox Code Playgroud)