2013-02-14 3 views
3

У меня есть два вопроса:Как найти перекрывающиеся структуры сообщества, используя R?

1- Мне было интересно, можно ли выявить перекрывающиеся структуры сообщества в R, используя igraph?

2- Я обнаружил, что пакет LinkComm может сделать что-то подобное (найти onverlapping структуры сообщества), но он не может принимать играфические сети, можно ли применять функции LinkComm к графику igraph?

Спасибо заранее,

+0

Что вы имеете в виду, но он не может принимать igraph сети? У вас есть играф, и вы хотите применить к нему функции LinkComm? Из вашего вопроса неясно, что у вас есть входы? что вы пытаетесь получить? что вы пробовали? – agstudy

+0

yest Agstudy, это верно. он не может принимать графические графики. – Moe

+0

право? На что? Я задаю вам несколько вопросов, чтобы прояснить ваш первый вопрос ... Очевидно, вы не понимаете. Вопрос в том, что это необходимо, необходимо уточнить, поэтому у вас нет ответа через 4 часа. – agstudy

ответ

3

Здесь вы сможете найти (грязновато) трюк использовать linkcomm пакет с igraph объектов. Трудность состоит в том, что linkcomm использует пакет igraph0, и он непосредственно использует поля объектов igraph, и это не. Их подход работает с пакетом igraph0, но он не с пакетом 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

+0

Спасибо, Габор, пожалуйста, включите это перекрывающееся сообщество в ваш пакет igraph :), BTW появилось несколько новых быстрых алгоритмов K-Clique, их стоит включить в ваш удивительный igraph пакет. – Moe

+0

Вы можете сделать запрос функции здесь: https://bugs.launchpad.net/igraph –

+0

Не могли бы вы объяснить, что означает сюжет «community membership» при запуске демонстрации 'linkcomm'? –