Reshape2의 Melt가 변환에서 Rownames를 캡처 할 수없는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/19826832

  •  13-07-2022
  •  | 
  •  

문제

다음 데이터가 있습니다.

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)
도움이 되었습니까?

해결책

나는 모른다 부분적이지만 나는 당신이 행 이름을 얻을 수 있다는 것을 알고 있습니다. melting a matrix 대신 a 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 ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top