从 R 中的距离矩阵中删除 NA 值
Remove NA values from distance matrix in R
我是 R 的新手,我正在寻找一种方法如何从包含 NA 值的距离矩阵中删除所有行和列。这是一个例子:
set.seed(1)
data <- matrix(rpois(n = 400, lambda = 10), nrow = 20, ncol = 20)
rownames(data) <- LETTERS[1:20]
dist_matrix <- dist(data, method = "euclidean")
dist_matrix[sample(1:190, 10)] <- NA
有什么优雅的方法可以做到这一点吗?非常感谢!
让我们做一个更小的例子,以便我们检查它:
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
的行和列,即,如果节点具有 any 缺失距离,则它完全消失了。如果这不是您想要的,请在像这样的合理大小的输入上展示您想要的结果。
我是 R 的新手,我正在寻找一种方法如何从包含 NA 值的距离矩阵中删除所有行和列。这是一个例子:
set.seed(1)
data <- matrix(rpois(n = 400, lambda = 10), nrow = 20, ncol = 20)
rownames(data) <- LETTERS[1:20]
dist_matrix <- dist(data, method = "euclidean")
dist_matrix[sample(1:190, 10)] <- NA
有什么优雅的方法可以做到这一点吗?非常感谢!
让我们做一个更小的例子,以便我们检查它:
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
的行和列,即,如果节点具有 any 缺失距离,则它完全消失了。如果这不是您想要的,请在像这样的合理大小的输入上展示您想要的结果。