Похоже, проблема в том, что stats::cutree
маскируется dendextend::cutree
после загрузки пакета dendextend
и что dendextend::cutree
не работает для объектов, сгенерированных некоторыми функциями пакета cluster
, такими какdiana
и agnes
(пока stats::cutree
работает нормально).
EDIT : эта проблема наблюдалась с dendextend
1.9.0, но была очень быстро исправлена автором пакета после сообщения об ошибке .Новая версия 1.10.0 прекрасно работает с cluster
и clValid
версией из CRAN.Он может быть установлен через: 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
.