Я создаю объект hclust
вручную (т.е. создаю список с необходимыми слотами, затем меняю его класс на hclust
). Шаблон слияния, высоты бифуркаций, порядок листовых узлов и метки листовых узлов известны. Моя цель (и средство тестирования) - построить результирующую дендрограмму. Я не могу создать объект hclust
для печати с моими параметрами.
Компоненты объекта hclust
описаны в документации по функции hclust
здесь (см. раздел Значение).
Ниже приведен воспроизводимый фрагмент кода R
, который я использую для создания и построения дендрограммы.
tree <- list()
tree$merge <- matrix(c( -1, -7, # row 1
-2, -6, # row 2
-3, -12, # row 3
-4, -14, # row 4
-5, -8, # row 5
-9, -11, # row 6
-13, -20, # row 7
-15, -19, # row 8
1, 8, # row 9
2, 5, # row 10
3, 6, # row 11
2, -18, # row 12
1, 3, # row 13
2, 4, # row 14
-10, 7, # row 15
-16, -17, # row 16
1, 2, # row 17
15, 16, # row 18
1, 15), # row 19
ncol = 2,
byrow = TRUE)
tree$height <- c(0.06573653, 0.06573653, 0.06573653, 0.06573653, 0.06573653, 0.06573653, 0.06573653, 0.06573653, 0.11167131, 0.11167131, 0.11167131, 0.12832304, 0.17304035, 0.17304035, 0.17304035, 0.17304035, 0.22965349, 0.22965349, 0.23334799)
tree$labels <- as.character(1:20)
tree$order <- c(1, 7, 15, 19, 3, 12, 9, 11, 2, 6, 5, 8, 18, 4, 14, 13, 20, 10, 16, 17)
class(tree) <- "hclust"
plot(tree)
Каждая строка матрицы tree$merge
соответствует бифуркации. Отрицательные целые числа относятся к индексам листовых узлов, тогда как положительные целые числа относятся к существующим кластерам по индексам строк в tree$merge
.
Запуск кода приводит к следующему сообщению об ошибке.
Error in plot.hclust(tree) : 'merge' matrix has invalid contents
Эскиз предполагаемого результата показан ниже, где значения heights
отмечены дополнительными пунктирными линиями. (Рисунок не в масштабе.)