我想创建一个邻接矩阵,其中包含igraph
图形对象的边权重,以便我可以绘制热图。然而,我的一些边权重是0,所以我想要一个使用NA
而不是0的稀疏矩阵。
示例数据:
gg1 <- graph_from_literal(a-+b, b-+c, b-+d, c-+d, d-+a, d-+e)
gg1 <- set.edge.attribute(gg1, "weight", value = c(1, 3, 2, 0, -2, 0))
as_adjacency_matrix(gg1, attr = "weight", sparse = T)
a b c d e
a 0 1 0 0 0
b 0 0 3 2 0
c 0 0 0 0 0
d -2 0 0 0 0
e 0 0 0 0 0
[c,d]
和[d,e]
是唯一的合法0,我想要的所有其他内容NA
。 as_adjacency_matrix
很棒,但有没有办法让它填充&#34;不存在的边缘&#34;用NA
而不是0?
谢谢!
答案 0 :(得分:1)
Cludgy,但是嘿......
gg1 <- graph_from_literal(a-+b, b-+c, b-+d, c-+d, d-+a, d-+e)
gg1 <- set.edge.attribute(gg1, "weight", value = c(1, 3, 2, 0, -2, 0))
gg1 <- as_adjacency_matrix(gg1, attr = "weight", sparse = T)
gg1 <- formatSpMatrix(gg1, zero.print = "NA")
class(gg1) <- "numeric"
# a b c d e
# a NA 1 NA NA NA
# b NA NA 3 2 NA
# c NA NA NA 0 NA
# d -2 NA NA NA 0
# e NA NA NA NA NA