如何使用R找到重叠的社区结构?

时间:2013-02-14 00:32:29

标签: r networkx igraph

我有两个问题:

1-我想知道是否有可能使用igraph来揭示R中的重叠社区结构?

2-我发现LinkComm包可以做类似的事情(查找onverlapping社区结构)但它不能接受igraph网络,是否可以将LinkComm函数应用于igraph图?

提前致谢,

1 个答案:

答案 0 :(得分:3)

这是使用linkcomm包和igraph个对象的(相当脏的)技巧。困难在于linkcomm使用igraph0包,它直接使用igraph个对象'字段,而建议。他们的方法适用于igraph0包,但不适用于igraph包,因为igraph定义了igraph图的[[索引运算符。

无论如何,以下内容只是覆盖了linkcomm包中的一个函数。它适用于软件包版本1.0-6(2011-05-27),它几乎肯定不适用于任何其他版本。正确的解决方案是由作者更新linkcomm包。

library(linkcomm)

# This will result a long warning about masked objects, because igraph 
# defines almost all names igraph0 defines, and linkcomm loads igraph0.
# But we are fine if we load igraph after linkcomm, because by default
# the igraph functions will be used
library(igraph)

# Modify the function from the linkcomm package, we create a new 
# function called 'lc'
lc <- as.list(getLinkCommunities)
lc[[11]][[10]][[3]] <- call("get.edgelist", quote(x), names=FALSE)
lc <- as.function(lc)

# Get some test data
karate <- nexus.get("karate")

# Use the newly defined 'lc' function on the test data
karcomm <- lc(get.data.frame(karate), check.duplicates=FALSE)

result plot