【问题标题】:How to insert a distance matrix into R and run hierarchical clustering如何将距离矩阵插入 R 并运行层次聚类
【发布时间】:2016-06-03 01:51:49
【问题描述】:

我知道如果我有原始数据,我可以创建一个距离矩阵,但是对于这个问题,我有一个距离矩阵,我希望能够在 R 中运行命令,比如 hclust。下面是我想要在 R 中的距离矩阵。我不确定以矩阵形式存储这些数据是否有效,因为我无法在矩阵上运行 hclust。

我尝试使用as.dist 函数创建它,但无济于事。我的错误代码:

test=as.dist(c(.76,2.97,4.88,3.86,.8,4.17,1.96,.21,1.51,.51), diag = FALSE, upper = FALSE)
test
      1    2    3    4    5    6    7    8    9
2  2.97                                        
3  4.88 2.97                                   
4  3.86 4.88 0.51                              
5  0.80 3.86 2.97 0.21                         
6  4.17 0.80 4.88 1.51 0.80                    
7  1.96 4.17 3.86 0.51 4.17 0.51               
8  0.21 1.96 0.80 2.97 1.96 2.97 0.80          
9  1.51 0.21 4.17 4.88 0.21 4.88 4.17 0.21     
10 0.51 1.51 1.96 3.86 1.51 3.86 1.96 1.51 0.51

【问题讨论】:

  • @lukeA 它没有给我正确的距离。我需要一个 5x5 下对角矩阵,而不是 10 x 10。

标签: r matrix distance hierarchical-clustering


【解决方案1】:

由于您已经有了距离值,因此您无需使用dist() 来计算它们。数据可以存储在正则矩阵中

test <- matrix(ncol=5,nrow=5)
test[lower.tri(test)] <- c(.76,2.97,4.88,3.86,.8,4.17,1.96,.21,1.51,.51)
diag(test) <- 0

> test
     [,1] [,2] [,3] [,4] [,5]
[1,] 0.00   NA   NA   NA   NA
[2,] 0.76 0.00   NA   NA   NA
[3,] 2.97 0.80 0.00   NA   NA
[4,] 4.88 4.17 0.21 0.00   NA
[5,] 3.86 1.96 1.51 0.51    0

为了应用hclust(),然后可以将此矩阵转换为带有as.dist()的距离矩阵:

> test <- as.dist(test, diag = TRUE)
     1    2    3    4    5
1 0.00                    
2 0.76 0.00               
3 2.97 0.80 0.00          
4 4.88 4.17 0.21 0.00     
5 3.86 1.96 1.51 0.51 0.00
> hclust(test)
#
#Call:
#hclust(d = test)
#
#Cluster method   : complete 
#Number of objects: 5 
> plot(hclust(test))

【讨论】:

  • 感谢您的回复,但是运行hclust(test) 不起作用。我相信这个类必须是一个'dist'类
  • @PippensPips 你是对的,对不起。我更正了答案,希望能解决您的问题。
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 2016-08-21
  • 2014-10-24
  • 2019-01-11
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
相关资源
最近更新 更多