【问题标题】:How to identify subnetworks in adjacency matrix?如何识别邻接矩阵中的子网?
【发布时间】:2020-07-15 12:07:32
【问题描述】:

我有一个基于以下边的网络图“G”:

library(igraph)

edges <- data.frame( 
  from=c(1,1,4,4,4,5,5,6),
  to=  c(2,3,5,6,7,6,7,7))

G <- graph_from_data_frame(d=edges,  directed=F) 

此示例显然包含 2 个子网,第一个具有节点 1、2、3,第二个具有节点 4、5、6、7。我想:

  1. 确定“i”属于哪个子网节点。
  2. 每个子网中的节点数。

因此,在此示例中,该函数将理想地创建一个对象,该对象的行数与 G 中的节点数一样多,并且有两列:第一列包含指示子网 ID 的向量,第二列包含大小 ( gsize) 的子网。 .

 result <- data.frame( 
  ID=c(1,1,2,2,2,2,2,2),
  gsize=c(3,3,3,4,4,4,4,4))

G <- graph_from_data_frame(d=edges,  directed=F) 

我是使用igraph 的新手,所以也许有一个功能可以做到这一点。

【问题讨论】:

标签: r igraph adjacency-matrix subgraph


【解决方案1】:

如果您感兴趣的只是断开连接的组件:

library(igraph)
library(dplyr)

edges <- data.frame( 
  from=c(1,1,4,4,4,5,5,6),
  to=  c(2,3,5,6,7,6,7,7))

G <- igraph::graph_from_data_frame(d=edges,  directed=F) 


# create requested dataframe

df <- data.frame(node_ID = as.vector(V(G)), 
                 community = as.vector(components(G)$membership))

required_df <- df %>% 
  dplyr::inner_join(df %>% 
                      dplyr::group_by(community) %>% 
                      dplyr::count(name = "community_size")
                    )

如果您对更复杂的集群感兴趣:

library(igraph)
library(dplyr)

edges <- data.frame( 
  from=c(1,1,4,4,4,5,5,6),
  to=  c(2,3,5,6,7,6,7,7))

G <- igraph::graph_from_data_frame(d=edges,  directed=F) 

# find subnetworks using louvain algorithm and adding to community in graph

louvain_partition <- igraph::cluster_louvain(G)

G$community <- louvain_partition$membership

# create requested dataframe

df <- data.frame(node_ID = as.vector(V(G)), community = G$community)

required_df <- df %>% 
  dplyr::inner_join(df %>% 
                      dplyr::group_by(community) %>% 
                      dplyr::count(name = "community_size")
  )

【讨论】:

  • 你在编辑吗:你可以在不使用连接的情况下从组件中获取所有信息:with(components(G), data.frame(node = names(membership), component = membership, size=csize[membership]))
  • 非常感谢基思! components 函数正是我要寻找的。​​span>
猜你喜欢
  • 2021-03-02
  • 2018-06-07
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多