igraph:从一个顶点开始查找连续连接的顶点 igraph r

3

输入:

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)

这个想法是:我不知道终点在哪里,我只知道起点,并且希望返回从该点开始的连续路径。


也许是 ?all_simple_paths 或者 ?ego - user20650
1
谢谢兄弟user20650。那很有帮助。 - Hisham Hussein
@HishamHussein;如果您已经解决了您的问题,写一篇答案会很好。 - user20650
@user20650。你已经提供了答案,谢谢兄弟。我只是使用了你的答案。如果我写了一个答案,那就是重复的,所以不需要了。 - Hisham Hussein
好的,我会写下来,这样Q就可以被标记为已回答。 - user20650
显示剩余4条评论
1个回答

3

你可以使用ego或者all_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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接