在 igraph 邻接矩阵中区分 0s(零)和 NAs
Distinguishing 0s (zero) from NAs in an igraph adjacency matrix
我想创建一个邻接矩阵,其中包含来自 igraph
图对象的边权重,以便我可以绘制热图。但是,我的一些边权重为 0,所以我想要一个使用 NA
s 而不是 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,我想要的所有其他内容都是 NA
。 as_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
我想创建一个邻接矩阵,其中包含来自 igraph
图对象的边权重,以便我可以绘制热图。但是,我的一些边权重为 0,所以我想要一个使用 NA
s 而不是 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,我想要的所有其他内容都是 NA
。 as_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