输入矩阵的R层次聚类问题

R hierarchical clustering issue with input matrix

我是 R 的初学者。我的图有 11 个顶点。我正在尝试使用单链接制作树状图,但出现了一些奇怪的错误。这是我自己手动创建的距离矩阵。它的矩阵 11x11.

mat<-matrix(c(0,1,2,3,3,1,2,2,2,3,2,
          1,0,1,2,2,2,1,2,3,2,3,
          2,1,0,1,1,2,2,1,2,3,3,
          3,2,1,0,1,3,3,2,3,4,4,
          3,2,1,1,0,3,3,2,3,4,4,
          1,2,2,3,3,0,1,1,1,2,1,
          2,1,2,3,3,1,0,1,2,1,2,
          2,2,1,2,2,1,1,0,1,2,2,
          2,3,2,3,3,1,2,1,0,1,1,
          3,2,3,4,4,2,1,2,1,0,1,
          2,3,3,4,4,1,2,2,1,1,0),nrow=11,byrow=TRUE)
rownames(mat)<-c('v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9', 'v10', 'v11')
colnames(mat)<-c('v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9', 'v10', 'v11')

当我尝试通过这个启动我的 hclust 函数时:

singleLinkage <- hclust(mat,method="single")

我收到错误 Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") : 在 TRUE/FALSE 需要的地方缺少值。我认为错误在矩阵中。在 hclust 函数中应该是由 dist 函数创建的一些矩阵,但我根本不理解这个概念。请任何人都可以帮助错误在哪里?非常感谢你。 :)

你猜对了。您需要传递 hclust 一个 dist 对象。您可以通过计算 dist 来获得它,或者像您的情况一样,将矩阵强制转换为 dist(因为它已经具有其属性)。

hclust(as.dist(mat), method = "single")