【问题标题】:Write table with row name ordered after clustering in R's heatmap.2在 R 的 heatmap.2 中聚类后写入行名排序的表
【发布时间】:2015-04-06 00:56:53
【问题描述】:

使用以下代码:

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);

我得到以下热图:

我想要做的是将聚类结果保存到文本文件中 但行名按聚类结果排序:

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)

【问题讨论】:

    标签: r heatmap


    【解决方案1】:

    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 版本写入磁盘

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多