igraph - 邻居作为子图 - make_ego_graph() 作为单个图
igraph - Neighbors as subgraph - make_ego_graph() as single graph
我想构造一个有向网络图的子图,其中所有顶点共享某个顶点属性(例如,V(Grph)$year == "1952")及其一阶(直接)邻居,仅基于出度。
我试过 ego()
、make_ego_graph()
、neighbors()
和 adjacent_vertices()
。
例如,
CitGraph <- make_ego_graph(Grph, 1, nodes = which(V(Grph)$year=="1952"), mode = "out")
生成一个图表列表(而不是一个完整的图表),令人惊讶的是,今年 50k 个顶点和 150k 个邻居被指向需要两个小时。
我能想到的一种方法是聚合列表中的所有这些图,但不知道如何聚合。另外,我想保留顶点属性,因为我的最终目标是根据另一个顶点属性(在本例中为地理位置)计算 assortativity_nominal()
。
提前感谢您的任何建议!
的确 make_ego_graph
returns 列表中每个顶点的邻域图 nodes
。
我建议您使用需要包含在子图中的边列表而不是顶点列表来解决它。假设你的顶点列表像 list_of_vertices <- V(Grph)$year == "1952"
一样被解决,或者无论你的情况如何,你会做类似的事情,
list_of_edges <- E(your_graph)[from(list_of_vertices) | to(list_of_vertices)]
your_subgraph <- subgraph.edges(your_graph, list_of_edges)
(我使用的是有向图。)
希望对您有所帮助。
我想构造一个有向网络图的子图,其中所有顶点共享某个顶点属性(例如,V(Grph)$year == "1952")及其一阶(直接)邻居,仅基于出度。
我试过 ego()
、make_ego_graph()
、neighbors()
和 adjacent_vertices()
。
例如,
CitGraph <- make_ego_graph(Grph, 1, nodes = which(V(Grph)$year=="1952"), mode = "out")
生成一个图表列表(而不是一个完整的图表),令人惊讶的是,今年 50k 个顶点和 150k 个邻居被指向需要两个小时。
我能想到的一种方法是聚合列表中的所有这些图,但不知道如何聚合。另外,我想保留顶点属性,因为我的最终目标是根据另一个顶点属性(在本例中为地理位置)计算 assortativity_nominal()
。
提前感谢您的任何建议!
的确 make_ego_graph
returns 列表中每个顶点的邻域图 nodes
。
我建议您使用需要包含在子图中的边列表而不是顶点列表来解决它。假设你的顶点列表像 list_of_vertices <- V(Grph)$year == "1952"
一样被解决,或者无论你的情况如何,你会做类似的事情,
list_of_edges <- E(your_graph)[from(list_of_vertices) | to(list_of_vertices)]
your_subgraph <- subgraph.edges(your_graph, list_of_edges)
(我使用的是有向图。)
希望对您有所帮助。