【发布时间】:2021-06-05 00:43:41
【问题描述】:
我有一个矩阵,如下所示
ID_1 ID_2 ID_3 ID_4 ID_8 ID_5 ID_7 ID_100
ID_1 0 1 1 1 Inf 2 2 Inf
ID_2 1 0 2 1 Inf 1 2 Inf
ID_3 1 2 0 2 Inf 3 1 Inf
ID_4 1 1 2 0 Inf 2 1 Inf
ID_8 Inf Inf Inf Inf 0 Inf Inf 1
ID_5 2 1 3 2 Inf 0 3 Inf
ID_7 2 2 1 1 Inf 3 0 Inf
ID_100 Inf Inf Inf Inf 1 Inf Inf 0
我使用了as.data.frame.table 和filter,因为我只想要那些具有 3 的值。输出看起来像
nodeA nodeB score
1 ID_5 ID_3 3
2 ID_3 ID_5 3
3 ID_7 ID_5 3
4 ID_5 ID_7 3
我写的代码
mat_pi_lon <- as.data.frame.table(mat, responseName = "score") %>%
filter(score ==3) %>%
rename(nodeA = Var1, nodeB = Var2)
但是,我的实际预期输出如下所示。因为,ID_3 ID_5 3 and ID_5 ID_3 3 是相同的(就概念而言)。所以,我只想要ID_3 ID_5 3 而不是ID_5 ID_3 3。
nodeA nodeB score
1 ID_3 ID_5 3
2 ID_5 ID_7 3
可以减少输出吗?
可重现的数据
structure(c(0, 1, 1, 1, Inf, 2, 2, Inf, 1, 0, 2, 1, Inf, 1, 2,
Inf, 1, 2, 0, 2, Inf, 3, 1, Inf, 1, 1, 2, 0, Inf, 2, 1, Inf,
Inf, Inf, Inf, Inf, 0, Inf, Inf, 1, 2, 1, 3, 2, Inf, 0, 3, Inf,
2, 2, 1, 1, Inf, 3, 0, Inf, Inf, Inf, Inf, Inf, 1, Inf, Inf,
0), .Dim = c(8L, 8L), .Dimnames = list(c("ID_1", "ID_2", "ID_3",
"ID_4", "ID_8", "ID_5", "ID_7", "ID_100"), c("ID_1", "ID_2",
"ID_3", "ID_4", "ID_8", "ID_5", "ID_7", "ID_100")))
【问题讨论】: