2010-05-06 18 views
14

क्या आर के लिए natural sort है?प्राकृतिक सॉर्टिंग कैसे करें?

मैं एक चरित्र वेक्टर इसलिए की तरह था कहते हैं:

seq.names <- c('abc21', 'abc2', 'abc1', 'abc01', 'abc4', 'abc201', '1b', '1a') 

मैं इसे aphanumerically क्रमित करना चाहते हैं, तो मैं वापस इस मिल:

c('1a', '1b', 'abc1', 'abc01', 'abc2', 'abc4', 'abc21', 'abc201') 

इस कहीं मौजूद है, या मैं चाहिए कोडिंग शुरू करें?

उत्तर

26

मुझे नहीं लगता कि "अल्फान्यूमेरिक सॉर्ट" का अर्थ है जो आपको लगता है इसका मतलब है।

किसी भी मामले में, ऐसा लगता है कि आप mixedsort चाहते हैं।

> install.packages('gtools') 
[...] 
> require('gtools') 
Loading required package: gtools 
> n 
[1] "abc21" "abc2" "abc1" "abc01" "abc4" "abc201" "1b"  "1a"  
> mixedsort(n) 
[1] "1a"  "1b"  "abc1" "abc01" "abc2" "abc4" "abc21" "abc201" 
+0

उत्कृष्ट! क्या अल्फान्यूमेरिक सॉर्ट इस के लिए सही शब्द नहीं है? क्या मैं इसे गलत चीज़ कह रहा हूं? – cbare

+1

अल्फान्यूमेरिक सॉर्ट यह पसंद करेगा कि आर सॉर्ट() फ़ंक्शन से क्या लौटाया जाता है। प्रत्येक चरित्र का मूल्यांकन स्थिति के ASCII मूल्य के आधार पर किया जाता है। छोटे मान पहले क्रमबद्ध होते हैं। इस मामले में, "abc01" "abc1" से पहले होगा क्योंकि ASCII मान "0" (48) स्थिति 4 के लिए "1" (4 9) से छोटा है। – beach

+4

मैंने आमतौर पर "प्राकृतिक क्रम क्रम" शब्द का उपयोग किया है ऐसा करने के लिए सॉफ़्टवेयर के पहले व्यापक रूप से उपयोग किए जाने वाले टुकड़ों में से (http://www.naturalordersort.org/)। जेफ एटवुड ने इसके बारे में एक ब्लॉग पोस्ट भी लिखा (http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-sort-order.html)। –

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