3

我有两个问题:

1-我想知道是否可以使用 igraph 在 R 中发现重叠的社区结构?

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

提前致谢,

4

1 回答 1

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)

结果图

于 2013-02-14T07:23:57.437 回答