考虑到数据集中的双重性,如何将列表转换为数据帧仍然是两列?

时间:2015-12-28 18:24:07

标签: r list

我在R中有一个列表,如下例所示:

> exemplo
$`c("64735", "254528")`
[1] "703322"

$`100288287`
[1] "100426225"

$`391195`
[1] "707174" "706331"

我正在尝试将此列表转换为dataframe保持两个列。我用过这个函数:

> Reduce(rbind, Map(cbind, exemplo, gene = names(exemplo)))
                 gene                      
[1,] "703322"    "c(\"64735\", \"254528\")"
[2,] "100426225" "100288287"               
[3,] "707174"    "391195"                  
[4,] "706331"    "391195"

但我在第二栏仍有问题。任何想法如何做到这一点。

1 个答案:

答案 0 :(得分:4)

我们stack'示例'list到2列data.frame,将其转换为data.tablesetDT(..),按'值'分组,将'ind'列除以数字unlist以外的字符,然后删除输出('V1')为空或空白的行。

library(data.table)
setDT(stack(exemplo))[, unlist(strsplit(as.character(ind), 
         '[^0-9]+')), by = values][V1!='']
#      values        V1
#1:    703322     64735
#2:    703322    254528
#3: 100426225 100288287
#4:    707174    391195
#5:    706331    391195