在igraph邻接矩阵中区分0(零)与NA

时间:2018-01-24 11:25:33

标签: r matrix igraph

我想创建一个邻接矩阵,其中包含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,我想要的所有其他内容NAas_adjacency_matrix很棒,但有没有办法让它填充&#34;不存在的边缘&#34;用NA而不是0?

谢谢!

1 个答案:

答案 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