让我们先创建dist
对象:
data(iris)
X <- iris[1:10, -5]
D <- dist(X)
我想知道如何遍历dist
对象的行/列(例如,计算行的总和)?
答案 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;使用矩阵的数字row
和col
索引的逻辑索引&#39; m1&#39;。逻辑矩阵中的TRUE/FALSE
值将转换为1/0
,当我们乘以时,&#39; m1&#39;中的值对应于&#39; 0&#39;值将变为0,其他值保持不变。
rowSums(m1*(row(m1)>col(m1)))