Давайте сначала создать объект dist
:Перебора «расстояние» матрица
data(iris)
X <- iris[1:10, -5]
D <- dist(X)
Интересно, как перебрать строки/столбцы dist
объекта (например, вычислить сумму строк)?
Давайте сначала создать объект dist
:Перебора «расстояние» матрица
data(iris)
X <- iris[1:10, -5]
D <- dist(X)
Интересно, как перебрать строки/столбцы dist
объекта (например, вычислить сумму строк)?
Мы можем преобразовать матрицу dist
в matrix
путем упаковки as.matrix
. Это даст симметричной матрице диагонали как 0. Так как нам нужно либо только нижние или верхние треугольные значения, можно назначить один из них в «-» и сделать rowSums
m1 <- as.matrix(D)
m1[upper.tri(m1, diag=TRUE)] <- 0
rowSums(m1)
colSums(m1)
Или мы умножаем (*
) 'm1' с логическим индексом из числа row
и col
индекс матрицы 'm1'. Значения TRUE/FALSE
из логической матрицы будут преобразованы в 1/0
, а при умножении значения в «m1», соответствующие значениям «0», станут 0, а другие останутся неизменными.
rowSums(m1*(row(m1)>col(m1)))