在 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 节点及其邻居的列表。所以你只需要将这些列表中的每一个转换成图表。您可以使用 lapply
和 induced_subgraph
来做到这一点。
library(igraph)
library(igraphdata)
data(karate)
sub1 <- ego(karate)
ListOfGraphs = lapply(sub1, function(x) induced_subgraph(karate, x))
class(ListOfGraphs[[1]])
[1] "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 节点及其邻居的列表。所以你只需要将这些列表中的每一个转换成图表。您可以使用 lapply
和 induced_subgraph
来做到这一点。
library(igraph)
library(igraphdata)
data(karate)
sub1 <- ego(karate)
ListOfGraphs = lapply(sub1, function(x) induced_subgraph(karate, x))
class(ListOfGraphs[[1]])
[1] "igraph"