【问题标题】:Cleaning a graph with R package "igraph"使用 R 包“igraph”清理图形
【发布时间】:2015-03-10 10:27:03
【问题描述】:

我需要在 R 中“清理”一个图表。通过清理,我的意思是我需要删除所有未与特定节点链接的节点。例如,如果在我的图中有 4 个节点,有这些边:

  • 1 到 3

  • 1 到 2

  • 4 到 2

我只想保留与边 1 链接的节点加上边 1 本身,所以说我需要删除边 4。

有没有什么方法可以用 igraph 构建一个算法来处理非常非常大的图(比如超过 1000 个节点和 1 000 000 条边)?

【问题讨论】:

    标签: r graph igraph


    【解决方案1】:

    使用subcomponentinduced.subgraph

    edges_df <- data.frame(from = c(1, 1, 4), to = c(3, 2, 2))
    g1 <- graph.data.frame(edges_df, directed = TRUE)
    
    g2 <- induced.subgraph(g1, subcomponent(g1, "1", mode = "out"))
    

    至于“大”图:1000 并不是那么大。在我的笔记本电脑上:

    system.time({
      g3 <- graph.full(n = 1000, directed = TRUE)
      g4 <- induced.subgraph(g3, subcomponent(g3, "1", mode = "out"))
    })
    # user  system elapsed 
    # 0.47    0.10    0.57 
    

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 2022-11-14
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多