【问题标题】:igraph: find continuously connected vertices starting from a vertex igraph rigraph:从顶点 igraph r 开始查找连续连接的顶点
【发布时间】:2016-04-07 00:56:10
【问题描述】:

输入:

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)

思路是:不知道终点,只知道起点 我想返回从这一点开始的连续路径

【问题讨论】:

  • 这样的东西 - stackoverflow.com/questions/12135971/… - 是一个很好的起点吗?
  • 谢谢你的兄弟,但不是我要找的
  • 也许?all_simple_paths 或?ego
  • 这很接近 user20650 但是,有一个问题。它只返回访问过一次的顶点。在我的示例中:all_simple_paths(df, from = 8) 将返回一个空列表,因为 8 被访问了两次
  • 谢谢兄弟user20650。这很有帮助

标签: r igraph


【解决方案1】:

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

#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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2018-04-14
    • 2015-11-20
    • 1970-01-01
    • 2013-01-21
    • 2015-07-21
    相关资源
    最近更新 更多