Давайте сделаем небольшой пример, чтобы мы могли его проверить:
set.seed(1)
n = 7
data <- matrix(rpois(n = n^2, lambda = 10), nrow = n)
rownames(data) <- LETTERS[1:n]
dist_matrix <- dist(data, method = "euclidean")
dist_matrix[sample(1:(n * (n - 1) / 2), 2)] <- NA
dist_matrix
# A B C D E F
# B 9.327379
# C 11.224972 9.000000
# D 10.630146 NA 10.049876
# E 13.674794 13.490738 12.529964 NA
# F 12.165525 11.532563 13.490738 7.000000 10.344080
# G 6.633250 10.908712 10.862780 11.445523 13.601471 12.649111
x = as.matrix(dist_matrix)
x = x[rowSums(is.na(x)) == 0, colSums(is.na(x)) == 0, drop = FALSE]
as.dist(x)
# A C F
# C 11.22497
# F 12.16553 13.49074
# G 6.63325 10.86278 12.64911
Вы не дали пример вывода (и это было бы непрактично для такого большого примера), поэтому я не уверен на 100%, что вы хотите. Он пропускает строки и столбцы, которые имеют NA
в полной матрице расстояний, то есть, если узел имеет любые пропущенные расстояния, он полностью исчезает. Если это не то, что вам нужно, продемонстрируйте желаемый результат на вводе разумного размера, подобном этому.