में आदेश रखने मैं एक वेक्टर है, vec1
कहते हैं, और एक अन्य वेक्टर के रूप में नामित किया गया vec2
इस प्रकार है:दो वैक्टर की सभी संभव संयोजनों जबकि आर
vec1 = c(4,1)
# [1] 4 1
vec2 = c(5,3,2)
# [1] 5 3 2
क्या मैं के लिए देख रहा हूँ vec1
के सभी संभव संयोजनों है और vec2
जबकि वैक्टर के तत्वों का क्रम रखा जाता है। यही है, परिणामस्वरूप मैट्रिक्स इस तरह होना चाहिए:
> res
[,1] [,2] [,3] [,4] [,5]
[1,] 4 1 5 3 2
[2,] 4 5 1 3 2
[3,] 4 5 3 1 2
[4,] 4 5 3 2 1
[5,] 5 4 1 3 2
[6,] 5 4 3 1 2
[7,] 5 4 3 2 1
[8,] 5 3 4 1 2
[9,] 5 3 4 2 1
[10,] 5 3 2 4 1
# res=structure(c(4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 1, 5, 5, 5, 4, 4, 4,
# 3, 3, 3, 5, 1, 3, 3, 1, 3, 3, 4, 4, 2, 3, 3, 1, 2, 3, 1, 2, 1,
# 2, 4, 2, 2, 2, 1, 2, 2, 1, 2, 1, 1), .Dim = c(10L, 5L))
दो वैक्टरों के लिए दोहराव की अनुमति नहीं है। यही है, परिणामी मैट्रिक्स की सभी पंक्तियों में अद्वितीय तत्व हैं।
मैं वास्तव में सबसे प्रभावी तरीका ढूंढ रहा हूं। इस समस्या से निपटने का एक तरीका है लंबाई की सभी संभावित क्रमिकताओं को उत्पन्न करना जो वास्तविक रूप से बढ़ता है (n=5
यहां) और फिर फ़िल्टरिंग लागू करें। लेकिन यह समय लेने वाली है n
बढ़ता है।
क्या ऐसा करने का कोई प्रभावी तरीका है?
तो, यह स्पष्ट है कि आप क्रम-परिवर्तन नहीं करना चाहते हैं, लेकिन वास्तव में क्या आप "आदेश संरक्षण" द्वारा मतलब है? 'Vec2' के सभी तत्व मूल अनुक्रमित क्रम में (और' vec1' के लिए समान) में प्रकट होना चाहिए, लेकिन इस पर कोई सीमा नहीं है कि एक इनपुट का तत्व दूसरे के किसी भी तत्व से पहले है या नहीं? अगला, क्या होगा यदि दोनों वैक्टरों में एक आम मूल्य है? या यह गारंटी नहीं है कि ऐसा न हो? –