2010-06-01 31 views
17

मेरे पास स्ट्रिंग का वेक्टर है। मेरी वेक्टर की जाँच करें, यह awesome है:स्ट्रिंग्स के वेक्टर से नामों का अनूठा सेट कैसे बनाएं?

> awesome 
[1] "a" "b" "c" "d" "d" "e" "f" "f" 

मैं एक नया वेक्टर awesome लेकिन जहां, यदि आवश्यक हो, तार uniqueified दिया है के रूप में ही लंबाई है कि बनाने के लिए करना चाहते हैं। उदाहरण के लिए, मेरी वांछित समारोह का एक मान्य उत्पादन होगा

> awesome.uniqueified 
[1] "a" "b" "c" "d.1" "d.2" "e" "f.1" "f.2" 

एक आसान, आर thonic और सुंदर यह करने के लिए रास्ता नहीं है? मुझे वास्तविक जीवन में मेरी सूची कहना चाहिए (इसे awesome नहीं कहा जाता है) में 25000ish मिरकोरे प्रोबसेट पहचानकर्ता शामिल हैं।

जब मैं थोड़ा सामान्य कार्य लिखता हूं (जो मुझे यकीन है कि मैं कर सकता हूं) लिखने पर हमेशा परेशान हूं क्योंकि मुझे यकीन है कि कुछ आर गुरु इस समस्या में अतीत में आ गए हैं, इसे कुछ अविश्वसनीय एल्गोरिदम के साथ खींचा है वेक्टर में आधा तत्व भी स्टोर नहीं करना पड़ता है। मुझे यकीन नहीं है कि उन्होंने इसे क्या कहा होगा। शायद uniqueify नहीं।

उत्तर

19

जहां सहायता पृष्ठ की पहले ही उदाहरण पहले से ही स्पॉट पर है make.unique() का प्रयास करें:

make.unique(c("a", "a", "a")) 
[1] "a" "a.1" "a.2" 

मदद पृष्ठ लेखक के रूप में थॉमस Minka सूचीबद्ध करता है। उसे एक बियर एक दिन खरीदें :)

+1

पूरे जवाब बनाने के लिए ... make.unique (strsplit (भयानक, '') [[1]]) आप शब्द एक चरित्र में अलग करने की जरूरत है वेक्टर – John

+0

पोस्टिंग शीर्षक, और मूल उदाहरण, 'तारों का वेक्टर' दिखाएं, इसलिए मुझे नहीं लगता कि हमें 'strsplit() 'की आवश्यकता है। –

+0

सचमुच यह स्टैक ओवरफ्लो पर मेरा सबसे साफ प्रश्न/उत्तर अनुभव रहा है। बहुत बहुत धन्यवाद! निश्चित रूप से डॉ। मिन्का को एक बियर मिल जाएगा जो मुझे कभी अवसर मिलना चाहिए। मुझे लगता है, इस पैटर्न के बाद, मैंने उसे ईपी के लिए बियर दिया और क्या उसने 'गेट्स' नोटेशन विकसित नहीं किया? शायद उसे इसके लिए भी बियर मिलना चाहिए। –

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