热图功能在R树状图失效



无论如何我都不能理解为什么这个方法失败了,我真的很感激这里有额外的眼睛:

heatmap.2(TEST,trace="none",density="none",scale="row", 
     ColSideColors=c("red","blue")[data.test.factors],
     col=redgreen,labRow="", 
     hclustfun=function(x) hclust(x,method="complete"),
     distfun=function(x) as.dist((1 - cor(x))/2))  

得到的错误是:行树形图排序给出了错误长度的索引

如果我不包含distfun,一切都工作得很好,并且对hclust函数有响应。如有任何建议,我将不胜感激。

dist的标准调用计算所提供的矩阵的行之间的距离,cor计算所提供的矩阵的列之间的相关性,因此上面的示例要工作,您需要转置矩阵:

heatmap.2(TEST,trace="none",density="none",scale="row", 
     ColSideColors=c("red","blue")[data.test.factors],
     col=redgreen,labRow="", 
     hclustfun=function(x) hclust(x,method="complete"),
     distfun=function(x) as.dist((1 - cor(  t(x)  ))/2))

应该工作。如果你使用一个方阵,你会得到有效的代码,但它不会像你想象的那样计算。

这还不能复制…

 TEST <- matrix(runif(100),nrow=10)
  heatmap.2(TEST, trace="none", density="none", 
            scale="row",
            labRow="",
            hclust=function(x) hclust(x,method="complete"),
            distfun=function(x) as.dist((1-cor(x))/2))

适合我。我不知道redgreendata.test.factors是什么

您是否尝试过debug(heatmap.2)options(error=recover)(或traceback(),尽管它本身不太可能有用)来尝试追踪错误的精确位置?

> sessionInfo()
R version 2.13.0 alpha (2011-03-18 r54865)
Platform: i686-pc-linux-gnu (32-bit)
...
other attached packages:
[1] gplots_2.8.0   caTools_1.12   bitops_1.0-4.1 gdata_2.8.2    gtools_2.6.2  

基于Ben Bolker的回复,如果TEST是n×n矩阵并且data.test.factors是n个整数的向量,则您的代码似乎可以工作。比如以

开头
 n1 <- 5
 n2 <- 5
 n3 <- 5
 TEST <- matrix(runif(n1*n2), nrow=n1)
 data.test.factors <- sample(n3)

,那么你的代码就可以工作了。然而,如果n1n2是不同的,那么你会得到错误row dendrogram ordering gave index of wrong length,而如果他们是相同的,但n3是不同的或data.test.factors有非整数,那么你会得到错误'ColSideColors' must be a character vector of length ncol(x)

相关内容

  • 没有找到相关文章

最新更新