首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在clValid中使用cutree.default(clusterObj,nc)中的错误:函数树只适用于hclust/树状图/phylo对象

在clValid中使用cutree.default(clusterObj,nc)中的错误:函数树只适用于hclust/树状图/phylo对象
EN

Stack Overflow用户
提问于 2018-09-13 18:23:10
回答 1查看 349关注 0票数 2

使用Brock等人的默认数据集,2008年

代码语言:javascript
复制
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对象。

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 18:16:48

这个问题似乎来自这样一个事实:一旦加载了包stats::cutreedendextend::cutree就会屏蔽它,而dendextend::cutree并不适用于使用cluster包的某些函数(如dianaagnes )生成的对象(而stats::cutree工作得很好)。

编辑:这个问题是在dendextend 1.9.0中观察到的,但是包作者在错误报告之后很快就修复了这个问题。新版本1.10.0对cluster和来自CRAN的clValid版本都非常好。它可以通过:devtools::install_github("talgalili/dendextend")安装。

这是目前最好的解决办法。我只在这里为档案馆提供了下面的初步答案。

一些测试代码(没有dendextend就一切正常,但是加载dendextend会触发错误消息):

代码语言:javascript
复制
# 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似乎成了孤儿,所以不可能要求开发人员更改代码(或者我错了吗?)

解决办法:

  • 不要同时使用dendextendclValid
  • 不要在agnesdianaclMethods参数中使用clValid
  • 我已经分叉了clValid github存储库(来自CRAN),并对代码进行了必要的小修改。您可以使用devtools::install_github("GillesSanMartin/clValid")安装此版本。当加载dendextend时,它也适用于我。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52319709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档