【问题标题】:Extract graphs based on identifier and calculate network measures in igraph基于标识符提取图形并在 igraph 中计算网络度量
【发布时间】:2019-12-11 21:58:37
【问题描述】:

我想单独分析网络中的组。例如igraphdata包中的英国教员数据有一些网络数据,节点级别有组信息。

library(igraph)
library(igraphdata)
data("UKfaculty")

V(UKfaculty)$Group

我想基于 4 个组提取网络,并在提取的图上运行一些计算(密度、平均度、直径、聚类系数等),并根据数据帧中的组存储这些信息。我想仅根据组内的节点而不是整个网络级别来计算度量(例如,仅根据组 1 中的连接计算中心性,而不考虑与其他组的连接)。

Group    density    diameter
    1          x           x
    2          x           x
    3          x           x

知道如何有效地做到这一点吗?

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    您可以使用induced_subgraph 根据每个组的顶点list 提取子图。

    library(igraph)
    library(igraphdata)
    
    data("UKfaculty")
    ig <- UKfaculty
    
    # `list` of vertices for every group        
    idx <- split(V(ig), V(ig)$Group)
    
    # Create subgraphs based on the `list` of vertices
    lst <- lapply(idx, function(v) induced_subgraph(ig, v))
    

    然后直接计算任何特定于子图的指标,例如

    do.call(rbind, lapply(lst, function(ig)
        data.frame(
            Group = unique(V(ig)$Group),
            density = edge_density(ig),
            diameter = diameter(ig))))
    #  Group   density diameter
    #1     1 0.3001894       21
    #2     2 0.3561254       12
    #3     3 0.2807018       14
    #4     4 1.0000000       12
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2020-10-22
      • 2021-11-30
      • 1970-01-01
      • 2019-10-13
      相关资源
      最近更新 更多