1

我有一些 R 代码可以从相关矩阵制作热图,这在我上次使用它时有效(在 2013 年 10 月 17 日更新 gplots 之前;更新到 R 版本 3.0.2 之后)。这让我觉得最近的 gplots 更新发生了一些变化,但我不知道是什么。

曾经呈现出漂亮情节的东西现在给了我这个错误:

" hclustfun(distfun(x)) 中的错误:找不到函数 "distfun" "

并且不会绘制任何东西。下面是重现该图的代码(当我使用它来教本科生如何在项目中使用热图时,被大量评论)。我尝试添加最后一行来明确设置功能,但它无助于解决问题。

编辑:我将最后一行代码更改为: ,distfun =function(c) {as.dist(1-c,upper=FALSE)}, hclustfun=hclust) 并且它有效。当我只使用“dist=as.dist”时,我得到了一个图,但它没有正确排序,并且一些树状图分支没有连接到树。不知道发生了什么,或者为什么这有效,但它似乎是。

任何帮助将不胜感激。

提前致谢,

library(gplots)
set.seed(12345)

randData <- as.data.frame(matrix(rnorm(600),ncol=6))

randDataCorrs <- randData+(rnorm(600))
names(randDataCorrs) <- paste(names(randDataCorrs),"_c",sep="")
randDataExtra <- cbind(randData,randDataCorrs)

randDataExtraMatrix <- cor(randDataExtra)


heatmap.2(randDataExtraMatrix, # sets the correlation matrix to use
          symm=TRUE, #tells whether it is symmetrical or not
          main= "Correlation matrix\nof Random Data Cor", # Names plot
          xlab= "x groups",ylab="", # Sets the x and y labels
          scale="none", # Tells it not to scale the data
          col=redblue(256),# Sets the colors (can be manual, see below) 
          trace="none", # tells it not to add a trace
          symkey=TRUE,symbreaks=TRUE, # Tells it to keep things symmetric around 0
          density.info = "none"#) # can be "histogram" if you want a hist of your corr values here
          #,distfun=dist, hclustfun=hclust)
          ,distfun =function(c) {as.dist(1-c,upper=FALSE)}, hclustfun=hclust) # new last line
4

1 回答 1

2

我遇到了同样的错误,然后我注意到我创建了一个名为 dist 的变量,这是对distfun= dist. 我重命名了变量,然后一切正常。您可能犯了同样的错误,因为您的新代码正在运行,因为您更改了distfun.

于 2014-10-06T02:27:03.517 回答