如果您想查看每个步骤的最大相关性,这是一个解决方案。所以第一步不会只看第一行,而是看整个矩阵。
样本数据 :
d <- matrix(runif(36),ncol=6,nrow=6)
rownames(d) <- colnames(d) <- LETTERS[1:6]
diag(d) <- 1
d
A B C D E F
A 1.00000000 0.65209204 0.8520392 0.26980214 0.5844000 0.69335143
B 0.73531603 1.00000000 0.5499431 0.60511580 0.7483990 0.14788134
C 0.56433218 0.27242769 1.0000000 0.07952776 0.2147628 0.03711562
D 0.91756919 0.04853523 0.5554490 1.00000000 0.4344089 0.23381447
E 0.06897889 0.80740821 0.7974340 0.87425643 1.0000000 0.74546072
F 0.19961474 0.61665231 0.2829632 0.58110694 0.7433924 1.00000000
和代码:
results <- data.frame(v1=character(0), v2=character(0), cor=numeric(0), stringsAsFactors=FALSE)
diag(d) <- 0
while (sum(d>0)>1) {
maxval <- max(d)
max <- which(d==maxval, arr.ind=TRUE)[1,]
results <- rbind(results, data.frame(v1=rownames(d)[max[1]], v2=colnames(d)[max[2]], cor=maxval))
d[max[1],] <- 0
d[,max[1]] <- 0
d[max[2],] <- 0
d[,max[2]] <- 0
}
这使 :
v1 v2 cor
1 D A 0.9175692
2 E B 0.8074082
3 F C 0.2829632