2010-07-09 21 views
7

के लिए आदेशित जोड़े बनाने के लिए मैं एक वेक्टर को दो कॉलम में कैसे विभाजित करूं, मैं प्रयोग के लिए 34 विषयों से यादृच्छिक जोड़े उत्पन्न करने का प्रयास कर रहा हूं। विषयों को आईडी # 134 का असाइन किया जाएगा। यादृच्छिक आदेश दिया संख्या उत्पन्न करने के लिए (1-34) मैं निम्नलिखित कोड का इस्तेमाल किया:यादृच्छिक असाइनमेंट

### Getting a vector of random ordered numbers 1-34### 
    pairs<-sample(1:34,34,replace=F) 
    pairs 
    [1] 16 22 8 13 4 25 18 12 17 5 6 31 29 27 30 23 2 14 9 24 34 21 11 
    3 1 28 33 20 32 26 19 10 15 7 

मैं करना चाहते हैं क्या संख्या के इस यादृच्छिक आदेश लेने के लिए है और एक स्तंभ में तो वेक्टर के हर दूसरे तत्व विभाजित कि मैं निम्नलिखित आदेश दिया जोड़े:

partner1  partner2 
    16   22 
    8   13 
    .   . 
    .   . 
    15   7 

विचार या विचारों को कैसे वेक्टर से आदेश दिया जोड़े में जाने के लिए पर? किसी भी मदद या अंतर्दृष्टि की सराहना की जाएगी।

-थॉमस

+0

में ऊपर एक प्रकार की कटार के कोड गाढ़ा कर सकते हैं आप 'नमूना के रूप में एक ही प्रभाव प्राप्त कर सकते हैं (1:34, 34, प्रतिस्थापित करें = एफ) 'नमूना (1:34)' का उपयोग करके। – mbq

उत्तर

12

कि हो सकता है के रूप में आसान

के रूप में और प्रत्येक पंक्ति तो आप जोड़ी देता है।

संपादित सही उपयोग करने के लिए matrix()

+0

यह मेरे लिए 'as.matrix' के बजाय' matrix' का उपयोग करके काम करता है –

+0

मेरे लिए मैपिक्स भी काम करता है। धन्यवाद Dirk और gd047! – Thomas

0

मैट्रिक्स में अपने वेक्टर विभाजित करें और पंक्तियों और परिणाम के स्तंभों पर पुनरावृति। मैट्रिक्स 2 आयामी सरणी की तरह प्रस्तुत किया जाता है। तो आपको वेक्टर में विषम स्थिति और पंक्ति में दूसरे तत्व - पंक्ति में भी स्थिति में पंक्ति तत्व में पहले तत्व में इस मैट्रिक्स में सेट करने की आवश्यकता है। var वेक्टर = नया बाइट [34]; // इसे

 var matrix = new byte[2,17]; //the code below will fill this matrix, then you need only to print it 
     for (var i=0; i < vector.Length; i++) 
     { 
      var indexPosition = i + 1; 
      if (indexPosition % 2 != 0) //odd number 
      { 
       matrix[0, i/2] = vector[i]; 
      } 
      else //even number 
      { 
       matrix[1, i/2] = vector[i]; 
      } 
     } 

ऊपर दिए गए कोड का परीक्षण नहीं किया गया है, लेकिन अलगाव और विचार स्पष्ट है।

+3

यह सवाल आर के बारे में था। – Shane

0

बारी-बारी से, आप एक डेटा फ्रेम चाहते हैं:

df = data.frame(partner1=pairs[1:(length(pairs)/2)], 
       partner2=pairs[((length(pairs)/2)+1):length(pairs)]) 
0

तुम भी एक पंक्ति

pairs <- matrix(sample(1:34,34,replace=F), ncol=2) 
संबंधित मुद्दे