首页 > 解决方案 > 创建一个数据框,新列值是列表的名称

问题描述

给定以下不平等列表:

lst <- list("es1-7"= c(1,2,3,4), "sa1-12"=c(3,4) , "ES8-13"= c(9,7,4,1,5,2))

> lst
$`es1-7`
[1] 1 2 3 4

$`sa1-12`
[1] 3 4

$`ES8-13`
[1] 9 7 4 1 5 2

我想创建一个这样的数据框:

 group     numbers
1  es1-7       1
2  es1-7       2
3  es1-7       3
4  es1-7       4
5 sa1-12       3
6    ...     ...

因此,在这种情况下,names列表将是一个新列的值,称为列表的值。groupnumbers

解决方案使用base并且dplyr非常受欢迎

标签: rlistdplyr

解决方案


我们可以使用stackfrombase R创建一个两列 data.frame

stack(lst)[2:1]

或与enframe

library(tidyverse)
enframe(lst, name = "group", value = "numbers") %>%
    unnest

推荐阅读