आर

2012-01-23 8 views
5

में एन तक सभी सबसेट कैसे प्राप्त करें मैं एक सूची जेनरेट करना चाहता हूं जिसमें नंबर 2 के सभी 2^एन सबसेट शामिल हैं: एन में एन कैसे संभव है?आर

expand.grid(rep(list(0:4), 2)) 

रिटर्न 0 सभी सबसेट से युक्त एक डेटा फ्रेम: 4 आकार 2 - लेकिन मैं एक सूची है कि सभी आकार के सभी उप-समूहों में शामिल करना चाहते हैं।

उत्तर

10

कैसे के बारे में,

lapply(0:4, function(x) combn(4,x)) 
[[1]] 
    [,1] 

[[2]] 
    [,1] [,2] [,3] [,4] 
[1,] 1 2 3 4 

[[3]] 
    [,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 1 1 1 2 2 3 
[2,] 2 3 4 3 4 4 

[[4]] 
    [,1] [,2] [,3] [,4] 
[1,] 1 1 1 2 
[2,] 2 2 3 3 
[3,] 3 4 4 4 

[[5]] 
    [,1] 
[1,] 1 
[2,] 2 
[3,] 3 
[4,] 4 
+0

मैं के साथ इस संयुक्त इन सभी को '2^4' तत्वों के साथ एक सूची में लाने के लिए 'अनलिस्ट (, रिकर्सिव = गलत)' ('%>% असूची (रिकर्सिव = FALSE)' '2^4' तत्वों के साथ, प्रत्येक एक सबसेट से संबंधित है – MichaelChirico

5

पैकेज सेट में set_power फ़ंक्शन है जो पावर सेट को वापस कर देना चाहिए जो आपके शब्दों का वर्णन करने से उचित शब्द है। आप शब्दावली को संशोधित करना चाह सकते हैं, हालांकि, आपका कोड कुछ अलग कर रहा है। expand.grid गणितीय सेट वापस नहीं करता है बल्कि संयोजनों का आदेश देता है। सेट सिद्धांत में {1,1} {1} तक कम हो जाता है। विस्तार ग्रिड उस अर्थ में वास्तविक सेट निर्माण नहीं करता है। आप लंबाई 4 है कि कर सकता है expand.grid तक सभी data.frames की सूची चाहते हैं तो आपके है कि आसानी से के साथ पर्याप्त प्राप्त कर सकते हैं:

lapply(0:4, function(n) expand.grid(rep(list(0:4), n)))