在 igraph 中提取 ego_networks/sub-network

extract ego_networks/sub-network in igraph

我有一张有 169 个顶点和 513 条边的图。我需要提取所有 ego_networks 或 sub_networks 以获得每个节点及其直接邻居。我设法使用生成每个节点及其直接邻域的 ego(graph) 来做到这一点。但是,此函数的结果是一个列表列表,无法将每个自我提取为单独的 igraph 或邻接矩阵对象。

有没有办法将每个 ego_net 提取为 igraph 或邻接矩阵对象?

sub1 <- ego(graph)

#sub1 is a list of lists that contain each nodes with its direct neighbours. 
I can access each ego network by sub1[1], sub1[2], ...etc. however, I could not extract each ego
as a separate graph object. 

由于您没有提供任何数据,我将使用 igraphdata 包中的 karate 网络来说明答案。如您所述,ego returns 节点及其邻居的列表。所以你只需要将这些列表中的每一个转换成图表。您可以使用 lapplyinduced_subgraph 来做到这一点。

library(igraph)
library(igraphdata)
data(karate)
sub1 <- ego(karate)

ListOfGraphs = lapply(sub1, function(x) induced_subgraph(karate, x))
class(ListOfGraphs[[1]])
[1] "igraph"