2

Does column order matter when using the hierarchical clustering in R's heatmap.2 function? For some reason, the clusters are changing when I change the order of the columns in the CSV file.

Dataset 1 looks like this:

      A  B   C   D   E   F   G   H   I   J   K   L   M
 Z1   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 a    0 0   0   0   1   1   1   1   1   1   1   0   0
 Z2   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 b    0 0   0   0   0   0   1   1   1   1   1   1   1
 c    0 0   0   0   0   1   1   1   0   1   1   0   1
 Z3   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 d    0 0   0   0   1   0   0   0   1   1   1   0   0
 e    0 0   0   1   0   1   1   1   1   0   1   0   1
 Z4   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 f    0 0   0   0   0   1   1   1   0   1   1   0   0
 g    1 1   0   1   0   1   1   1   1   1   1   1   0
 Z5   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 h    0 0   1   1   0   1   1   1   0   0   0   1   0
 i    0 0   0   1   0   1   0   1   0   1   1   0   0
 Z6   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 j    1 1   0   0   0   1   1   1   1   0   1   1   0
 k    0 0   0   0   1   1   1   0   1   0   1   1   0
 Z7   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 l    0 1   0   1   0   0   0   0   0   0   1   1   0
 m    0 0   1   1   1   1   0   1   0   0   0   0   0
 n    0 0   0   0   1   1   0   0   0   0   0   0   1
 o    0 0   0   0   1   0   1   1   1   0   1   1   0
 p    1 1   0   0   1   0   0   0   0   1   1   0   0
 Z8   NA    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 q    1 0   1   1   0   0   0   1   1   1   0   0   0
 r    1 0   1   0   1   0   0   1   1   0   1   0   1
 s    1 1   0   1   0   1   0   0   0   0   0   0   0

I'm using this code:

 library(gplots)
 v <- read.csv("file_path", row.names=1)
 v <- as.matrix(v)
 binarycol <- colorRampPalette(c("white","black"))

 heatmap.2(v,Rowv=FALSE,Colv=TRUE,dendrogram=c("col"),col=binarycol,
      scale="none",trace="none",key=FALSE,offsetRow=.05,margins=c(5,13),
      labRow=NULL,sepcolor="black",lhei=c(1,3),
      lwid=c(.05,3),cexCol=1,na.color=c("grey85"))

I run the exact same code using a file path for this CSV, which is identical except with different a column order:

     B   C   D   E   F   G   I   J   K   L   M   H   A
 Z1  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 a   0  0   0   1   1   1   1   1   1   0   0   1   0
 Z2  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 b   0  0   0   0   0   1   1   1   1   1   1   1   0
 c   0  0   0   0   1   1   0   1   1   0   1   1   0
 Z3  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 d   0  0   0   1   0   0   1   1   1   0   0   0   0
 e   0  0   1   0   1   1   1   0   1   0   1   1   0
 Z4  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 f   0  0   0   0   1   1   0   1   1   0   0   1   0
 g   1  0   1   0   1   1   1   1   1   1   0   1   1
 Z5  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 h   0  1   1   0   1   1   0   0   0   1   0   1   0
 i   0  0   1   0   1   0   0   1   1   0   0   1   0
 Z6  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 j   1  0   0   0   1   1   1   0   1   1   0   1   1
 k   0  0   0   1   1   1   1   0   1   1   0   0   0
 Z7  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 l   1  0   1   0   0   0   0   0   1   1   0   0   0
 m   0  1   1   1   1   0   0   0   0   0   0   1   0
 n   0  0   0   1   1   0   0   0   0   0   1   0   0
 o   0  0   0   1   0   1   1   0   1   1   0   1   0
 p   1  0   0   1   0   0   0   1   1   0   0   0   1
 Z8  NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 q   0  1   1   0   0   0   1   1   0   0   0   1   1
 r   0  1   0   1   0   0   1   0   1   0   1   1   1
 s   1  0   1   0   1   0   0   0   0   0   0   0   1

If the columns are clustered based on Euclidean distance, why does column order matter? Or am I doing something wrong?

jj987246
  • 105
  • 6

0 Answers0