【问题标题】: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)并指定诱导分组的变量?或者,有没有其他功能可以做到这一点?
【问题讨论】:
标签:
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)