2012-01-27 13 views
8

मेरे पास पूर्णांक का डेटा फ्रेम है जो सभी एन का एक सबसेट है 1 के 3 संयोजनों का चयन करें ... n।डुप्लिकेट संयोजनों को हटाने (ऑर्डर के बावजूद)

 [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 1 2 4 
[3,] 1 2 5 
[4,] 1 3 4 
[5,] 1 3 5 
[6,] 1 4 5 
[7,] 2 1 3 
[8,] 2 1 4 
[9,] 2 1 5 
[10,] 2 3 4 
[11,] 2 3 5 
[12,] 2 4 5 
[13,] 3 1 2 
[14,] 3 1 4 
[15,] 3 1 5 
[16,] 3 2 4 
[17,] 3 2 5 
[18,] 3 4 5 
[19,] 4 1 2 
[20,] 4 1 3 
[21,] 4 1 5 
[22,] 4 2 3 
[23,] 4 2 5 
[24,] 4 3 5 
[25,] 5 1 2 
[26,] 5 1 3 
[27,] 5 1 4 
[28,] 5 2 3 
[29,] 5 2 4 
[30,] 5 3 4 

मुझे क्या करना चाहते हैं आदेश पर ध्यान दिए बिना, डुप्लिकेट संयोजन के साथ किसी भी पंक्तियों को दूर है: जैसे, के लिए एन = 5, यह कुछ ऐसा है। उदा।, [1,] 1 2 3[1,] 2 1 3 जैसा ही है [1,] 3 1 2 जैसा ही है।

unique, duplicated, & सी। इसे ध्यान में रखना प्रतीत नहीं होता है। इसके अलावा, मैं काफी बड़ी मात्रा में डेटा (एन ~ 750) के साथ काम कर रहा हूं, इसलिए यह एक बहुत तेज़ ऑपरेशन होना चाहिए। क्या कोई आधार कार्य या पैकेज है जो यह कर सकता है?

उत्तर

17

बस पंक्तियों के भीतर बस क्रमबद्ध करें। कुछ ऐसा:

> dat = matrix(scan('data.txt'), ncol=3, byrow=T) 
Read 90 items 
> dat.sort = t(apply(dat, 1, sort)) 
> dat[!duplicated(dat.sort),] 
     [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 1 2 4 
[3,] 1 2 5 
[4,] 1 3 4 
[5,] 1 3 5 
[6,] 1 4 5 
[7,] 2 3 4 
[8,] 2 3 5 
[9,] 2 4 5 
[10,] 3 4 5 
+0

+1, छोटा और मीठा। –

+0

बिल्कुल सही, धन्यवाद! उस बारे में सोचा नहीं था। – seanimo

+0

टी (combn (सी (1: 5), 3)) – aatrujillob

संबंधित मुद्दे