Как преобразовать симметричную матрицу в объект "dist"?

Я хочу использовать hclust для кластеризации данных. Но я не хочу использовать "dist()" для генерации объекта dist. Затем я обнаружил, что не могу передать симметричную матрицу в качестве матрицы расстояния в hclust.

Как преобразовать симметричную матрицу в объект "dist"?

Ответы

Ответ 1

Похоже, вы уже рассчитали матрицу и хотите использовать ее в hclust. Как и @shadow, вы можете использовать as.dist(yourMatrix) для преобразования в формат dist.

Учитывая симметричную таблицу расстояний:

> yourMatrix<-matrix(c(1,2,3,4,2,1,2,1,3,2,1,3,4,1,3,1), nrow=4)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    2    1    2    1
[3,]    3    2    1    3
[4,]    4    1    3    1
>
>as.dist(yourMatrix)
  1 2 3
2 2    
3 3 2  
4 4 1 3

Убедитесь, что значения в вашей матрице являются несходством или метрикой расстояния, а не оценками подобия.

Ответ 2

Это то, что вам нужно? dist(matrix(1:16, nrow=4))