आर

2015-05-23 5 views
5

में igraph का उपयोग कर कनेक्टेड घटक प्राप्त करें मैं एक ग्राफ के सभी कनेक्टेड घटकों को ढूंढना चाहता हूं जहां घटकों में एक से अधिक तत्व हैं।आर

clusters का उपयोग करके विभिन्न क्लस्टर की सदस्यता मिलती है और cliques का उपयोग करके कनेक्टेड घटक नहीं मिलते हैं।

यह एक से

multiple intersection of lists in R

अनुवर्ती मेरा मुख्य लक्ष्य सूचियों जो एक दूसरे के साथ आम में तत्व के सभी समूहों को खोजने के लिए किया गया है।

अग्रिम धन्यवाद!

+0

आप की जरूरत 'clusters' करते हैं? – user20650

+0

@ उपयोगकर्ता 20650 हां। एक से अधिक तत्व के साथ क्लस्टर। क्षमा करें मेरा मतलब क्लस्टर के बजाय क्लस्टर है। प्रश्न – Dinesh

+0

संपादित किया गया है 'क्लस्टरर्स' फ़ंक्शन क्लस्टर सदस्यता और आकार देता है - इसे केवल एक नोड – user20650

उत्तर

9

क्लस्टर आकार के अनुसार आप अपने नोड्स को सब्सक्राइब करने के लिए clusters से परिणामों का उपयोग कर सकते हैं।

library(igraph) 

# example graph 
set.seed(1) 
g <- erdos.renyi.game(20, 1/20) 
V(g)$name <- letters[1:20] 
par(mar=rep(0,4)) 
plot(g) 

enter image description here

# get cluster 
cl <- clusters(g) 
cl 
# $membership 
# [1] 1 2 3 4 5 4 5 5 6 7 8 9 10 3 5 11 5 3 12 5 
# 
# $csize 
# [1] 1 1 3 2 6 1 1 1 1 1 1 1 
# 
# $no 
# [1] 12 


# loop through to extract common vertices 
lapply(seq_along(cl$csize)[cl$csize > 1], function(x) 
             V(g)$name[cl$membership %in% x]) 
# [[1]] 
# [1] "c" "n" "r" 
# 
# [[2]] 
# [1] "d" "f" 
# 
# [[3]] 
# [1] "e" "g" "h" "o" "q" "t" 
+3

में परिवर्तित करने की आवश्यकता है बस मस्ती के लिए, क्लस्टर होने के बाद यहां एक और तरीका है:' grps <- with (cl, duplicated (सदस्यता) | डुप्लीकेट (सदस्यता, सेला = TRUE)) के बाद 'unname (विभाजन (वी (जी) $ नाम [grps], सीएल $ सदस्यता [grps]))' – Jota