循环通过“dist”矩阵

时间:2015-08-21 14:20:51

标签: r

让我们先创建dist对象:

data(iris)
X <- iris[1:10, -5]
D <- dist(X)

我想知道如何遍历dist对象的行/列(例如,计算行的总和)?

1 个答案:

答案 0 :(得分:4)

我们可以通过dist换行将matrix矩阵转换为as.matrix。这将给对称矩阵将对角线为0.因为我们只需要低三角值或高三角值,我们可以将其中一个分配给&#39; 0&#39; 0并执行rowSums

m1 <- as.matrix(D)
m1[upper.tri(m1, diag=TRUE)] <- 0
rowSums(m1)
colSums(m1)

或者我们乘以(*)&#39; m1&#39;使用矩阵的数字rowcol索引的逻辑索引&#39; m1&#39;。逻辑矩阵中的TRUE/FALSE值将转换为1/0,当我们乘以时,&#39; m1&#39;中的值对应于&#39; 0&#39;值将变为0,其他值保持不变。

rowSums(m1*(row(m1)>col(m1)))