我在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"
但我在第二栏仍有问题。任何想法如何做到这一点。
答案 0 :(得分:4)
我们stack
'示例'list
到2列data.frame
,将其转换为data.table
(setDT(..
),按'值'分组,将'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