获取图 igraph 中 parent 节点的度数
get degree of parent node in a graph igraph
我有一个图,我想为每个节点计算其 parent 个节点的度数。
以图为例,
在本例中,node-9 的度为 9,node-19 有 5 个连接,node-3 有 4 个连接;对于 node-5 它将是 3,因为它的 parent node-13 有 3 个连接。
我想从一个节点(例如node-19)开始计算度数,并根据节点2的parents计算度数,距离node-19 3步。
我正在考虑使用函数 ego
,但它也给了我第 2 步和第 3 步中 parent 的 parent。
有什么帮助吗?
这是来自 igraph 社区教程的图表:
g <- graph_from_literal(A-B:F:C:E:D, B-A:D:C:E:F:G, C-A:B:F:E:D, D-A:B:C:F:E,
E-D:A:C:B:F:V:W:U, F-H:B:A:C:D:E, G-B:J:K:L:H,
H-F:G:I:J:K:L, I-J:L:H, J-I:G:H:L, K-G:H:L:M,
L-H:G:I:J:K:M, M-K:L:Q:R:S:P:O:N, N-M:Q:R:P:S:O,
O-N:M:P, P-Q:M:N:O:S, Q-M:N:P:V:U:W:R, R-M:N:V:W:Q,
S-N:P:M:U:W:T, T-S:V:W:U, U-E:V:Q:S:W:T,
V-E:U:W:T:R:Q, W-U:E:V:Q:R:S:T)
plot(g, vertex.color = "grey", edge.color = "blue")
degree(g)
为您提供图中每个节点的度数,neighbors(g,1,'A')[[1]]
为您提供 'A' 的所有邻居,即 1 条边。
degree(g)
A B F C E D G V W U H J K L I M Q R S P O N T
5 6 6 5 8 5 5 6 7 6 6 4 4 6 3 8 7 5 6 5 3 6 4
neighbors(g,1,'A')[[1]]
+ 6/23 vertices, named:
[1] A B F C E D
我们可以结合概括:
dist <- 1
pick <- 'A'
neighbors_w_degree <- degree(g)[neighborhood(g,dist,pick)[[1]]]
neighbors_w_degree
A B F C E D
5 6 6 5 8 5
在你的例子中,我们要排除基节点的度数,所以使用:
sum(neighbors_w_degree[!names(neighbors_w_degree) %in% pick])
[1] 30
在这种情况下是度数:B + C + D + E + F
我有一个图,我想为每个节点计算其 parent 个节点的度数。
以图为例,
在本例中,node-9 的度为 9,node-19 有 5 个连接,node-3 有 4 个连接;对于 node-5 它将是 3,因为它的 parent node-13 有 3 个连接。
我想从一个节点(例如node-19)开始计算度数,并根据节点2的parents计算度数,距离node-19 3步。
我正在考虑使用函数 ego
,但它也给了我第 2 步和第 3 步中 parent 的 parent。
有什么帮助吗?
这是来自 igraph 社区教程的图表:
g <- graph_from_literal(A-B:F:C:E:D, B-A:D:C:E:F:G, C-A:B:F:E:D, D-A:B:C:F:E,
E-D:A:C:B:F:V:W:U, F-H:B:A:C:D:E, G-B:J:K:L:H,
H-F:G:I:J:K:L, I-J:L:H, J-I:G:H:L, K-G:H:L:M,
L-H:G:I:J:K:M, M-K:L:Q:R:S:P:O:N, N-M:Q:R:P:S:O,
O-N:M:P, P-Q:M:N:O:S, Q-M:N:P:V:U:W:R, R-M:N:V:W:Q,
S-N:P:M:U:W:T, T-S:V:W:U, U-E:V:Q:S:W:T,
V-E:U:W:T:R:Q, W-U:E:V:Q:R:S:T)
plot(g, vertex.color = "grey", edge.color = "blue")
degree(g)
为您提供图中每个节点的度数,neighbors(g,1,'A')[[1]]
为您提供 'A' 的所有邻居,即 1 条边。
degree(g)
A B F C E D G V W U H J K L I M Q R S P O N T
5 6 6 5 8 5 5 6 7 6 6 4 4 6 3 8 7 5 6 5 3 6 4
neighbors(g,1,'A')[[1]]
+ 6/23 vertices, named:
[1] A B F C E D
我们可以结合概括:
dist <- 1
pick <- 'A'
neighbors_w_degree <- degree(g)[neighborhood(g,dist,pick)[[1]]]
neighbors_w_degree
A B F C E D
5 6 6 5 8 5
在你的例子中,我们要排除基节点的度数,所以使用:
sum(neighbors_w_degree[!names(neighbors_w_degree) %in% pick])
[1] 30
在这种情况下是度数:B + C + D + E + F