2015-02-06 40 views
1

用下面的代碼:寫表R中的heatmap.2集羣后下令

mydata <- mtcars 
hclustfunc <- function(x) hclust(x, method="complete") 
distfunc <- function(x) dist(x,method="euclidean") 
heatmap.2(as.matrix(mydata),dendrogram="row",trace="none", margin=c(8,9), hclust=hclustfunc,distfun=distfunc); 

我得到以下熱圖:enter image description here

我想要做的是保存的結果在一個文本文件中的集羣 ,但該行的名稱被排序爲集羣結果:

mpg cyl disp hp drat wt qsec vs am gear carb 
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1 
Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2 
Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1 
.... 
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8 

什麼是做到這一點的呢? 我在上面的代碼中的heatmap.2行後試過,但沒有給出 的結果,因爲我希望。

write.table(mydata, "~/Desktop/tmp.txt",row.names = TRUE, quote=FALSE) 

回答

3

heatmap.2函數不會對您的原始數據做任何事情。如果將調用結果保存到heatmap.2函數,它將返回可用於重新排序數據的rowDendrogram。例如

hh<-heatmap.2(as.matrix(mydata),dendrogram="row", 
    trace="none", margin=c(8,9), 
    hclust=hclustfunc,distfun=distfunc); 

sorted <- mydata[match(rev(labels(hh$rowDendrogram)), rownames(mydata)), ] 

#view result 
head(sorted) 
#    mpg cyl disp hp drat wt qsec vs am gear carb 
# Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 
# Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 
# Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 
# Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 
# Merc 230  22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 
# Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 

那麼你就可以write.table

寫data.frame到磁盤的排序版本