![](/img/trans.png)
[英]How to get the new hclust object after using cutree function in R
[英]Using clValid in R getting Error in cutree.default(clusterObj, nc) : Function cutree is only available for hclust/dendrogram/phylo objects only
使用 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) 中的錯誤:
函數 cuttree 僅適用於 hclust/dendrogram/phylo 對象。
問題似乎來自這樣一個事實,即stats::cutree
在加載包dendextend
后被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
和clValid
agnes
和diana
在clMethods
的說法clValid
clValid
github 存儲庫(來自 CRAN)並在代碼中進行了必要的小改動。 您可以使用devtools::install_github("GillesSanMartin/clValid")
安裝此版本。 當加載dendextend
時,它也適用於我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.