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