【问题标题】:R and Igraph edgesR 和 Igraph 边
【发布时间】:2013-10-10 04:37:55
【问题描述】:

我最终希望通过删除具有 2 个顶点的连接组件(即两个顶点之间都有一条边并且)来获得我的图形的一个子集 您可以将这个问题改写为:

 given an edge e = (s, d) if degree(s) == degree(d) == 1 then delete edge e

我正在使用 R 和 Igraph,我该怎么做?我知道我可以通过执行以下操作对我的图进行子集化以删除所有度数为零的节点:

g = some_graph()
ldegs <- V(g)[degree(g) < 1]
g = delete.vertices(g, ldegs)

提前致谢!

【问题讨论】:

    标签: r subset igraph


    【解决方案1】:

    我不认为这太难了,你只需找到度数 == 1 的节点列表,找到它们的邻居,如果任何邻居在列表中,它们就是要删除的:

    library(igraph)
    g = erdos.renyi.game(100, 0.02)
    ones = V(g)[degree(g) == 1]
    one_ns = sapply(ones, neighbors, graph=g)
    # If any of the neighbours are in ones, we
    # can delete these
    to_delete = one_ns[one_ns %in% ones]
    # Visualize:
    plot(g, mark.groups=to_delete)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 2017-01-07
      • 2011-03-19
      相关资源
      最近更新 更多