r语言 - 是否有一种方法在图网络上使用重叠社区聚类算法?



我有一个图网络的列表对象,我想应用一个重叠社区算法。我知道,cluster_fast_greedycluster_edge_betweenness在igraph是分层算法,但他们似乎不符合我的目的。

linkcomm包中的OCG聚类功能似乎就是这样做的。但它在我的任何一个图形网络上都不起作用。有没有一种方法可以在我的网络列表上使用它或另一种重叠聚类算法,而不必重写使网络对象的代码?

是否有一种方法来使用getOCG_cluster()或另一个重叠聚类算法在一个图网络?

我找到了一个解决方案,在一个igraph wiki上有一个自定义重叠社区功能的代码:http://igraph.wikidot.com/community-detection-in-r#toc0.

clique.community <- function(graph, k) {
clq <- cliques(graph, min=k, max=k)
edges <- c()
for (i in seq_along(clq)) {
for (j in seq_along(clq)) {
if ( length(unique(c(clq[[i]], clq[[j]]))) == k+1 ) {
edges <- c(edges, c(i,j)-1)
}
}
}
clq.graph <- simplify(graph(edges))
V(clq.graph)$name <- seq_len(vcount(clq.graph))
comps <- decompose.graph(clq.graph)
lapply(comps, function(x) {
unique(unlist(clq[ V(x)$name ]))
})
}

最新更新