因为我要做R型聚类(关于变量做聚类)所以我所使用的距离是相关系数。
但是R中好像没有直接算相关系数的函数,我就自己一步步算下来。算出的距离矩阵如下:
> coo
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1.0000000 0.9594380 0.3994936 0.8890399 0.5532020 0.9133578
[2,] 0.9594380 1.0000000 0.6406401 0.9755060 0.7614523 0.9906542
[3,] 0.3994936 0.6406401 1.0000000 0.7639712 0.9810119 0.7328402
[4,] 0.8890399 0.9755060 0.7639712 1.0000000 0.8699235 0.9840542
[5,] 0.5532020 0.7614523 0.9810119 0.8699235 1.0000000 0.8324743
[6,] 0.9133578 0.9906542 0.7328402 0.9840542 0.8324743 1.0000000
是矩阵的形式。
把他搞到hclust里问题就麻烦了[s:18]:
> q<-hclust(coo,"single")
错误于if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") :
需要TRUE/FALSE值的地方不可以用缺少值
我自己猜测是原来表示距离的位置应该是表单而不能是矩阵。
hclust的程序中写道:
n <- as.integer(attr(d, "Size"))
if (is.na(n) || n > 65536L)
stop("size cannot be NA nor exceed 65536")
而矩阵没有size。
但我不会把矩阵变成表单。
我自己试过把n强行令为6(我数据的维数),但也不能成功。
所以我想问问做过R型聚类的大神,怎么用hclust处理这件事。或者推荐个更适合的函数。