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

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

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

$`100288287`
[1] "100426225"

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

我正在尝试将此列表转换为数据帧仍然是两个列.我用过这个函数:

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

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

最佳答案
我们将’exemplo’列表堆叠为2列data.frame,将其转换为data.table(setDT(..),按’值’分组,将’ind’列除以number以外的字符,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

转载注明原文:考虑到数据集中的双重性,如何将列表转换为数据帧仍然是两列? - 代码日志