2017-02-16 55 views
1
{library(igraph) 
g <- graph.famous("Zachary") 
SelectedSeeds <- c(1,34) 
no_Hope <- 2 
mat_nei<-matrix(list(),nrow = length(SelectedSeeds),ncol = 1) 
for(i in 1:length(SelectedSeeds)){ 
    mat_nei[i,1]<-neighborhood(g,no_Hope,SelectedSeeds[i],mode = c("all","out","in"),mindist = 0) 
} 
#flatenning list into vectors 
l1<-unlist(mat_nei[1], recursive = TRUE, use.names = TRUE) 
l2<-unlist(mat_nei[2], recursive = TRUE, use.names = TRUE)  
} 

Выше кода создается сообщество сообщества для «SelectedSeeds». В этом как найти членство узлов?Как я могу расширить сообщество вокруг данного узла (путем установки моих собственных семенных узлов) из сети в R?

+1

Что именно вы спрашиваете? Какой результат вы ожидаете от данных образца? – MrFlick

+0

Мне нужно найти членство каждого узла в приведенном выше графике. Как я исхожу отсюда. –

ответ

1

Вы хотите что-то вроде следующего?

l1_l2_both <- intersect(l1, l2) 
# [1] 1 2 3 4 9 14 20 32 31 10 28 29 33 34 25 26 
l1_not_l2 <- setdiff(l1, l2) 
# [1] 5 6 7 8 11 12 13 18 22 17 
l2_not_l1 <- setdiff(l2, l1) 
# [1] 15 16 19 21 23 24 27 30 
not_l1_not_l2 <- setdiff(as.numeric(V(g)), union(l1,l2)) 
# numeric(0) 

V(g)$color <- 'green' 
V(g)[V(g) %in% l1_not_l2]$color <- 'red' 
V(g)[V(g) %in% l2_not_l1]$color <- 'blue' 
plot(g) 

enter image description here

или, что эквивалентно

community <- rep(0, length(V(g))) 
community[V(g) %in% l1_l2_both] <- 1 
community[V(g) %in% l1_not_l2] <- 2 
community[V(g) %in% l2_not_l1] <- 3 
community 
# [1] 1 1 1 1 2 2 2 2 1 1 2 2 2 1 3 3 2 2 3 1 3 2 3 3 1 1 3 1 1 3 1 1 1 1 
plot(g, vertex.color=community) 

enter image description here

+1

спасибо @SandipanDey –

 Смежные вопросы

  • Нет связанных вопросов^_^