igraph:从顶点igraph找到连续连接的顶点r

时间:2016-04-04 22:58:12

标签: r igraph

输入:

data.frame(from = c(NA, 2, 4, 5, 8, 8, 1),
           to   = c(1, 3, 7, 6, 9, 10, 11))


 from to
   NA  1
    2  3
    4  7
    5  6
    8  9
    8 10
    1 11

我想知道如何使用igraph选择起始顶点,并获得所有连续连接的顶点。

例如

select(2) -> c(2, 3)
select(4) -> c(4, 7)
select(1) -> c(1, 11)
select(8) -> c(8, 9, 10)

这个想法是:我不知道结束顶点,我只知道起点 我想从这一点开始返回连续路径

1 个答案:

答案 0 :(得分:1)

您可以使用egoall_simple_paths来查找已连接的节点,这些节点会根据您的需要提供略有不同的输出。(ego为邻居提供指定的深度一个字符串,all_simple_paths按路径方向分隔节点

#Your example

library(igraph)

g <- graph_from_data_frame(data.frame(from = c(NA, 2, 4, 5, 8, 8, 1),
           to   = c(1, 3, 7, 6, 9, 10, 11)))

 all_simple_paths(g, "2")
# [[1]]
# + 2/12 vertices, named:
# [1] 2 3

 ego(g, length(V(g)), "2")
# [[1]]
# + 2/12 vertices, named:
# [1] 2 3

所有在一起:

ego(g, length(V(g)), as.character(c(1,2,4,8)))

lapply(as.character(c(1,2,4,8)) , function(x) all_simple_paths(g, from=x))