使用Brock等人的默认数据集,2008年
install.packages("clValid", dependencies = TRUE)
library(clValid)
data("mouse")
express <- mouse[, c("M1", "M2", "M3", "NC1", "NC2", "NC3")]
rownames(express) <- mouse$ID
intern <- clValid(express, 2:6, clMethods = c("hierarchical", "kmeans", "diana", "fanny",
"som", "pam", "sota", "clara", "model"), validation = "internal")并得到以下信息:
Cutree.default中的错误(clusterObj,nc): 函数树只适用于hclust/树状图/phylo对象。
发布于 2019-02-07 18:16:48
这个问题似乎来自这样一个事实:一旦加载了包stats::cutree,dendextend::cutree就会屏蔽它,而dendextend::cutree并不适用于使用cluster包的某些函数(如diana和agnes )生成的对象(而stats::cutree工作得很好)。
编辑:这个问题是在dendextend 1.9.0中观察到的,但是包作者在错误报告之后很快就修复了这个问题。新版本1.10.0对cluster和来自CRAN的clValid版本都非常好。它可以通过:devtools::install_github("talgalili/dendextend")安装。
这是目前最好的解决办法。我只在这里为档案馆提供了下面的初步答案。
一些测试代码(没有dendextend就一切正常,但是加载dendextend会触发错误消息):
# detach(package:dendextend)
# library(dendextend)
#
library(cluster)
d <- iris[,-5]
cl <- diana(dist(d))
cutree(cl, 3)
cl <- agnes(dist(d))
cutree(cl, 3)
library(clValid)
intern <- clValid(d, 2:10,
clMethods = c("hierarchical", "kmeans", "diana", "fanny",
"model", "pam", "agnes"),
method = "ward", validation = "internal")可悲的是,clValid似乎成了孤儿,所以不可能要求开发人员更改代码(或者我错了吗?)
解决办法:
dendextend和clValidagnes和diana的clMethods参数中使用clValidclValid github存储库(来自CRAN),并对代码进行了必要的小修改。您可以使用devtools::install_github("GillesSanMartin/clValid")安装此版本。当加载dendextend时,它也适用于我。https://stackoverflow.com/questions/52319709
复制相似问题