我有一个169个顶点和513条边的图。我需要提取所有的ego_networks或sub_networks,以获得每个节点及其直接邻居。我设法做到这一点,使用ego(图)产生每个节点及其直接邻域。然而,这个函数的结果是一个列表的列表,不能将每个自我作为单独的图或邻接矩阵对象提取出来。
是否有一种方法来提取每个ego_net作为一个图或邻接矩阵对象?
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
返回节点及其邻居的列表。你只需要把这些列表转化成图表。您可以使用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"