【问题标题】:Splitting a large network into many subgraphs using igraph使用 igraph 将大型网络拆分为多个子图
【发布时间】:2021-10-18 21:22:14
【问题描述】:

我有一个大型数据集,其中包含来自不同学校的多个不同教室的社交网络数据。我想根据变量"class_id""school_id" 将这个大型网络分成许多较小的教室网络。我正在为标准数据帧寻找类似于split 的函数,它允许您指定一个因子f 来定义组数。我考虑过使用igraph 包中的函数induced_subgraph。但是,查看包文档,该函数仅包含选项vids,其中应列出将形成子图的顶点。有没有办法自动化这个过程(也许使用lapply)并指定诱导分组的变量?或者,有没有其他功能可以做到这一点?

【问题讨论】:

  • 您可以使用dput 分享您的数据吗?

标签: r igraph sna subgraph


【解决方案1】:

这样的?

library(igraph)

net <- erdos.renyi.game(n= 100, p = .05) # generate random graph
class_id <- sample(1:5, 100, replace = T) # generate random groups

# create list of group memberships
class_id_list <- lapply(unique(class_id), function(i,j){
                        which(j %in% i)},
                        j = class_id)

# extract subnets based on group memberships
split.net <- lapply(class_id_list, function(net, v){
  induced_subgraph(net, vids = v)
  },
  net = net)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-04
    • 2015-10-24
    • 2015-06-26
    • 1970-01-01
    • 2013-01-27
    • 2017-10-28
    • 2017-07-29
    相关资源
    最近更新 更多