簡體   English   中英

為什么reshape2的Melt無法在變換中捕獲rownames?

[英]Why reshape2's Melt cannot capture rownames in the transformation?

我有以下數據:

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)

我不知道為什么部分,但我知道你可以通過melt matrix而不是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的代碼具有以下行,這些行將在上面的示例中創建前兩列:

labels <- expand.grid(lapply(dn, var.convert), KEEP.OUT.ATTRS = FALSE, 
    stringsAsFactors = FALSE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM