为什么reshape2的Melt无法在变换中捕获rownames?

时间:2013-11-07 02:22:44

标签: r reshape reshape2

我有以下数据:

Cubn    3.71455160837536    0.237454645363458
Gm9779  2.56051657980096    0.20850752817264
Apod    3.51796703048962    0.195999214485821

我想要做的是创建'融化'数据,以便它提供此

       var1 var2     value
1      FOO Cubn   3.7145516
2      FOO Gm9779 2.5605166
3      FOO Apod   3.5179670
4      BAR Cubn   0.2374546
5      BAR Gm9779 0.2085075
6      BAR Apod   0.1959992

但为什么会失败呢?

 library("reshape2");
 dat <-read.table("http://dpaste.com/1446132/plain/",header=FALSE)
 rownames(dat) <- dat[,1]
 dat[,1] <- NULL
 colnames(dat) <- c("FOO","BAR");
 head(dat)
 longData <- melt(dat);
 head(longData)

1 个答案:

答案 0 :(得分:50)

我不知道为什么部分,但我知道您可以通过melt matrix而不是{{1}来获取行名称}:

data.frame

您必须查看melt(as.matrix(dat)) # Var1 Var2 value # 1 Cubn FOO 3.7145516 # 2 Gm9779 FOO 2.5605166 # 3 Apod FOO 3.5179670 # 4 Cubn BAR 0.2374546 # 5 Gm9779 BAR 0.2085075 # 6 Apod BAR 0.1959992 函数的代码才能知道它的行为方式。特别是,melt的代码具有以下行,这些行将在上面的示例中创建前两列:

reshape2:::melt.matrix