从预先计算的距离矩阵绘制树状图

时间:2014-01-29 21:04:10

标签: r matrix cluster-analysis

我知道有另一篇与此类似的帖子,但它对我的情况没有帮助。我试图从距离矩阵中绘制一个树形图,我计算的不是使用欧氏距离(使用地球移动器与emdist包的距离)。我现在正试图从这个矩阵中绘制一个树状图:

dim(x)
[1] 8800 8800

x <- x[1:10,1:10]
x
          1        2        3          4         5        6        7
1  0.00000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2  0.67400563 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
3  0.02577228 0.6526842 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
4  0.37994900 0.7268372 0.1240314 0.0000000 0.0000000 0.0000000 0.0000000
5  0.85156584 1.0248822 0.6165767 0.9077611 0.0000000 0.0000000 0.0000000
6  0.51784015 0.5286874 0.5115762 0.6601093 1.1639417 0.0000000 0.0000000
7  0.19290720 0.5906327 0.6576926 0.4350795 0.2986499 0.4130357 0.0000000
8  1.57669127 1.3727582 1.4215065 1.9522834 1.0919793 0.9681544 1.0372481
9  3.01650143 3.3004177 3.0651622 3.2502077 4.1505108 2.9940774 3.6078234
10 0.48684093 0.6997258 0.3959822 0.3515030 0.8611233 0.5505790 0.3047047
         8       9    10
1  0.000000 0.000000   0
2  0.000000 0.000000   0
3  0.000000 0.000000   0
4  0.000000 0.000000   0
5  0.000000 0.000000   0
6  0.000000 0.000000   0
7  0.000000 0.000000   0
8  0.000000 0.000000   0
9  3.753577 0.000000   0
10 1.500342 3.309016   0

问题出在我运行时

plot(hclust(x))

我收到此错误:

  

if(is.na(n)|| n&gt; 65536L)停止时出错(“大小不能为NA也不   超过65536“):缺少需要TRUE / FALSE的值

然而,如果我运行dist函数来计算距离矩阵的欧氏距离,我已经使用不同的方法计算了它,它绘制了图。

plot(hclust(dist(x)))

enter image description here

然而,这是不现实的。我需要使用hclust来处理我已经使用不同方法计算的距离矩阵。有什么想法吗?

2 个答案:

答案 0 :(得分:9)

hclust需要一个类dist的对象。 as.dist,而不是dist,应该给你想要的东西。

plot(hclust(as.dist(x)))

答案 1 :(得分:0)

您可以尝试使用邻居加入方法根据距离指标创建树。 Ape包中的nj函数可以提供帮助。

http://r-eco-evo.blogspot.com/2007/09/neighbor-joining-tree-with-ape.html