2014-06-07 3 views
3

Donc, j'ai 256 objets, et j'ai calculé la distance matrice (distances par paires) entre eux. Un sous-ensemble de ma matrice de distance est donnée ci-dessous:Clustering donné à une matrice de distance 256x256

> dm[1:10, 1:10] 
     V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
[1,] 0 1 1 1 1 2 2 2 1 2 
[2,] 1 0 1 1 2 1 2 2 2 1 
[3,] 1 1 0 1 2 2 1 2 2 2 
[4,] 1 1 1 0 2 2 2 1 2 2 
[5,] 1 2 2 2 0 1 1 1 1 2 
[6,] 2 1 2 2 1 0 1 1 2 1 
[7,] 2 2 1 2 1 1 0 1 2 2 
[8,] 2 2 2 1 1 1 1 0 2 2 
[9,] 1 2 2 2 1 2 2 2 0 1 
[10,] 2 1 2 2 2 1 2 2 1 0 

> str(dm) 
int [1:256, 1:256] 0 1 1 1 1 2 2 2 1 2 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:256] "V1" "V2" "V3" "V4" ... 

Maintenant, je veux utiliser cette matrice de distance pour regrouper ces 256 objets en conséquence. Par conséquent, je hclust, mais on m'a donné une erreur:

> hclust(dm, method="single") 
Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") : 
    missing value where TRUE/FALSE needed 


> hclust(dm, method="complete") 
Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") : 
    missing value where TRUE/FALSE needed 

Donc, même si j'utilise un plus petit sous-ensemble de la matrice, je serais toujours obtenir la même erreur:

> hclust(dm[1:10,1:10], method="complete") 
Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") : 
    missing value where TRUE/FALSE needed 

Toute idée de ce qui est mal avec mon analyse?

Répondre

5

dm doit être un objet de la classe "dist" dans hclust. Par conséquent, vous pouvez calculer votre matrice de dissimilarité avec la fonction dist, puis utiliser l'objet à l'intérieur de hclust.

m_trix = matrix(data=1:2,nrow=10,ncol=10) 

dm = dist(m_trix,method="euclidean") 
cluster = hclust(dm, method="single") 
plot(cluster) 

Ou vous pouvez utiliser dist(m_trix) directement à l'intérieur hclust:

cluster = hclust(dist(m_trix), method="single") 
plot(cluster) 
Questions connexes