在 igraph 邻接矩阵中区分 0s(零)和 NAs

Distinguishing 0s (zero) from NAs in an igraph adjacency matrix

我想创建一个邻接矩阵,其中包含来自 igraph 图对象的边权重,以便我可以绘制热图。但是,我的一些边权重为 0,所以我想要一个使用 NAs 而不是 0s 的稀疏矩阵。

示例数据:

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,我想要的所有其他内容都是 NAas_adjacency_matrix 很棒,但是有没有办法让它用 NA 而不是 0 填充 "non-existent edges" 的单元格?

谢谢!

笨拙,但是嘿...

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