R中的新gplots更新无法在heatmap中找到函数distfun

时间:2013-11-07 19:09:12

标签: r

我有一些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

1 个答案:

答案 0 :(得分:2)

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