【发布时间】:2012-10-21 21:09:23
【问题描述】:
可能重复:
How to apply a hierarchical or k-means cluster analysis using R?
考虑这四个列数相同但行数不同的矩阵
library(gtools)
m1 <- matrix(sample(c(-1, 0, 1), 15, replace=T), 3)
m2 <- matrix(sample(c(-1, 0, 1), 25, replace=T), 5)
m3 <- matrix(sample(c(-1, 0, 1), 25, replace=T), 5)
m4 <- matrix(sample(c(-1, 0, 1), 30, replace=T), 6)
rownames(m1) <- c(1:3)
rownames(m2) <- c(4:8)
rownames(m3) <- c(9:13)
rownames(m4) <- c(14:19)
我想将hclust()应用到这四个矩阵,按以下格式排列:
mat <- list(m1, m2, m3, m4)
unite <- rbind(m1,m2,m3, m4)
rownames(unite) <- c(1:19)
distUnite <- as.matrix(dist(unite, method="manhattan"))
## empty matrix for storing the distance between pairwise matrices
dist4m <- matrix(0, nrow=4, ncol=4)
indices <- combinations(4,2)
distance <- apply(indices, 1,
function(pair){
print(pair)
s1=pair[1]
s2=pair[2]
pairmean <- mean(distReads[which(m$Sample==samples[s1]), which(m$Sample==samples[s2])])
dist4m[s1,s2] <<- pairmean
dist4m[s2,s1] <<- pairmean
})
print(dist4m)
## then use hclust(), and plot()
上面的脚本应该可以工作,但我想知道是否有更有效和可靠的方法来解决?
感谢您的建议。
【问题讨论】:
-
你会在这个回答here的集群部分找到一些帮助
-
感谢您的信息。但有不同的问题。
-
我很欣赏差异位是不同的。聚类位不是。
-
问题也是如此;如何对矩阵
dist4m进行聚类分析? -
现在吉姆,你太迟钝了。您如何尝试计算矩阵之间的相似性?您定义两个矩阵的相似性的度量或方法是什么。对于单个矩阵,我可能会说我将(不)相似性定义为向量之间的欧几里得距离。你正在做各种各样的采样。如果我不知道您要实现什么(我无法从代码中看出!)您需要告诉我们您如何定义矩阵之间的相似性,以便我们看看是否有更有效的方法。