1

可能重复:
从 data.frame 中“解包”一个因子列表

如果我有一个与这样的格式相同的数据框

X   geneA,geneB
Y   geneD,geneF
Z   geneH,geneL,geneS

我正在尝试找到一种快速有效的扩展方式,以便我可以拆分(用逗号)第二列并分配第一列的相应值给我这样的东西

X   geneA
X   geneB
Y   geneD
Y   geneF
Z   geneH
Z   geneL
Z   geneS

先谢谢了!

4

1 回答 1

1

这是使用melt.list包中的解决方案reshape2

library(reshape2)

dat = read.table(header=FALSE, stringsAsFactors=FALSE,
                 text="X   geneA,geneB
                       Y   geneD,geneF
                       Z   geneH,geneL,geneS")

lst = strsplit(dat$V2, ",")
names(lst) = dat$V1

res = melt(lst)

res
#   value L1
# 1 geneA  X
# 2 geneB  X
# 3 geneD  Y
# 4 geneF  Y
# 5 geneH  Z
# 6 geneL  Z
# 7 geneS  Z
于 2013-01-11T01:14:35.210 回答