दिलचस्प पोस्ट
क्या हम एक वेब पेज में कई रूपों का उपयोग कर सकते हैं? प्रोजेर्ड नरक – संदर्भित वर्ग नहीं मिल सकता है जावा प्रतिबिंब: एक चर का नाम कैसे प्राप्त करें? स्विफ्ट में ठोस रंग के साथ UIImage बनाएं सी में MIN और MAX क्या मैं उद्देश्य-सी स्विच स्टेटमेंट के अंदर चर को घोषित कर सकता हूँ? आईओएस में केवल पहली लॉन्च पर स्क्रीन दिखाएं आप VBA कोड के समय का परीक्षण कैसे करते हैं? jQuery क्लोन () इवेंट बाइंडिंग क्लोनिंग नहीं, यहां तक ​​कि () मैं MySQL का उपयोग कर दो तिथियों के बीच कैसे क्वेरी करूं? पायथन में एक क्रमबद्ध सरणी के सूचकांक कैसे प्राप्त करें सीएसएस रीसेट – यह वास्तव में क्या करता है? GIT_WORK_TREE क्या है, मुझे इस ENV var को सेट करने की आवश्यकता क्यों नहीं है, अब क्यों? मैं कैसे गिट फ़ाइल मोड (chmod) परिवर्तनों को अनदेखा कर सकता हूं? json ऑब्जेक्ट जावास्क्रिप्ट के माध्यम से चलना

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

मैं 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