दिलचस्प पोस्ट
एक मशीन पर .NET ढाँचा के संस्करणों को वापस करने के लिए PowerShell स्क्रिप्ट? स्ट्रिंग.slice और String.substring के बीच अंतर क्या है? रूबी में मैं एचटीएमएल संस्थाओं को एनकोड / व्याख्या कैसे करूं? मैं एक HTML बटन कैसे पृष्ठ को पुनः लोड नहीं कर सकता आईपैड सफारी: लिंक को हिट होने पर त्वरित पलक प्रभाव को अक्षम कैसे करें क्या मैं web.config में maxJsonLength के लिए एक असीमित लंबाई निर्धारित कर सकता हूँ? AffineTransform.rotate () – मैं एक ही समय में xlate, rotate, और scale कैसे करूँ? एक रूटेड डिवाइस पर चलने का निर्धारण करें एंड्रॉइड में टेक्स्ट की लंबाई को सीमित करें कैसे एक numpy सरणी में एक अतिरिक्त कॉलम जोड़ने के लिए विधि हस्ताक्षर में जावा "पैरामीटर"? Android में SQLite डेटाबेस बनाएँ हाइपरलिंक के लिए आरटीएफ सिंटैक्स क्या है? कोको एप्लिकेशन में इंटरनेट कनेक्शन की जांच करें सादा अंग्रेजी में मोनाद? (ओपी प्रोग्रामर के लिए कोई एफपी पृष्ठभूमि नहीं)

सदिश के तत्वों के सभी संभावित संयोजनों की सूची उत्पन्न करें

मैं 0 और 1 के सभी संभावित संयोजनों की लंबाई 14 की एक वेक्टर में उत्पन्न करने की कोशिश कर रहा हूं। क्या वोटर की सूची के रूप में उस आउटपुट को प्राप्त करने का एक आसान तरीका है, या इससे बेहतर, एक डाटाफ्रेम?

मैं जो देख रहा हूं उससे बेहतर प्रदर्शन करने के लिए, मान लीजिए कि मुझे केवल 3 की एक सदिश चाहिए। मैं निम्नलिखित को उत्पन्न करने में सक्षम होना चाहता हूं:

(1,1,1), (0,0,0), (1,1,0), (1,0,0), (1,0,1), (0,1,0), (0,1,1), (0,0,0) 

किसी भी सहायता की सराहना की जाएगी!

धन्यवाद,

वेब के समाधान से एकत्रित समाधान "सदिश के तत्वों के सभी संभावित संयोजनों की सूची उत्पन्न करें"

आप विस्तार की तलाश में हैं।

 expand.grid(0:1, 0:1, 0:1) 

या, लंबे केस के लिए:

 n <- 14 l <- rep(list(0:1), n) expand.grid(l) 

@ जस्टिन के दृष्टिकोण के विकल्प के रूप में, आप CJ को "डेटा योग्य" पैकेज से भी उपयोग कर सकते हैं। यहां, मैंने अपनी 14 सूचियों और लोगों की सूची बनाने के लिए replicate जाने का भी उपयोग किया है।

 library(data.table) do.call(CJ, replicate(14, 0:1, FALSE)) # V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 # 1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # 2: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 # 3: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 # 4: 0 0 0 0 0 0 0 0 0 0 0 0 1 1 # 5: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 # --- # 16380: 1 1 1 1 1 1 1 1 1 1 1 0 1 1 # 16381: 1 1 1 1 1 1 1 1 1 1 1 1 0 0 # 16382: 1 1 1 1 1 1 1 1 1 1 1 1 0 1 # 16383: 1 1 1 1 1 1 1 1 1 1 1 1 1 0 # 16384: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

16384 संभावित क्रमपरिवर्तन हैं। आप iterpc पैकेज का उपयोग परिणाम को फिर से लाने के लिए कर सकते हैं।

 library(iterpc) I = iterpc(2, 14, label=c(0,1), order=T, replace=T) getnext(I) # [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 getnext(I) # [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 1 getnext(I) # [1] 0 0 0 0 0 0 0 0 0 0 0 0 1 0 

यदि आप सभी परिणाम चाहते हैं, तो आप अभी भी getall(I) उपयोग कर सकते हैं

चूंकि आप 0 और 1 के साथ काम कर रहे हैं, इसलिए बिट के मामले में पूर्णांक के बारे में सोचना स्वाभाविक लगता है। फ़ंक्शन को apply करने की आपकी पसंद के साथ, इस पोस्ट (नीचे MyIntToBit ) से थोड़ी बदल दी गई किसी फ़ंक्शन का उपयोग करके, हम इच्छित परिणाम प्राप्त कर सकते हैं।

 MyIntToBit <- function(x, dig) { i <- 0L string <- numeric(dig) while (x > 0) { string[dig - i] <- x %% 2L x <- x %/% 2L i <- i + 1L } string } 

यदि आप एक सूची चाहते हैं, तो lapply पसंद करें:

 lapply(0:(2^14 - 1), function(x) MyIntToBit(x,14)) 

यदि आप एक मैट्रिक्स पसंद करते हैं, तो sapply चाल करेंगे:

 sapply(0:(2^14 - 1), function(x) MyIntToBit(x,14)) 

नीचे दिए गए आउटपुट हैं:

 > lapply(0:(2^3 - 1), function(x) MyIntToBit(x,3)) [[1]] [1] 0 0 0 [[2]] [1] 0 0 1 [[3]] [1] 0 1 0 [[4]] [1] 0 1 1 [[5]] [1] 1 0 0 [[6]] [1] 1 0 1 [[7]] [1] 1 1 0 [[8]] [1] 1 1 1 > sapply(0:(2^3 - 1), function(x) MyIntToBit(x,3)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 0 0 0 0 1 1 1 1 [2,] 0 0 1 1 0 0 1 1 [3,] 0 1 0 1 0 1 0 1