我有两个问题:
1-我想知道是否可以使用 igraph 在 R 中发现重叠的社区结构?
2-我发现 LinkComm 包可以做类似的事情(找到重叠的社区结构)但它不能接受 igraph 网络,是否可以将 LinkComm 函数应用于 igraph 图?
提前致谢,
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)