2015-01-22 12 views
9

मैं आर में सूचियों की सूची को सॉर्ट करने का प्रयास कर रहा हूं। प्रत्येक उपन्यासकार में एक पूर्णांक और एक वर्ण स्ट्रिंग होता है। मेरा लक्ष्य सूचियों को आदेश देना है कि अंतिम सूची आरोही क्रम में पूर्णांक द्वारा क्रमबद्ध की जाती है। नीचे जो मैं पूरा करने की कोशिश कर रहा हूं उसका एक उदाहरण नीचे दिया गया है:आर में सूचियों की सूची कैसे क्रमबद्ध करें?

a <- list(-5,"help") 
b <- list(3, "stack") 
c <- list(1, "me") 
d <- list(10, "overflow") 

list.of.lists <- list(a,b,c,d) 
magic.sort(list.of.lists) 
# Below is not exactly how it would be displayed, but should be understandable 
-5, "help" 
1, "me" 
3, "stack" 
10, "overflow" 

क्या इस परिणाम को प्राप्त करने के लिए आर के भीतर कोई अच्छा तरीका है? आदर्श रूप से परिणाम सूचियों की सूची के रूप में भी वापस किया जाना चाहिए।

उत्तर

16

इस प्रयास करें:

list.of.lists[order(sapply(list.of.lists,'[[',1))] 
+0

तेज़ और सही उत्तर के लिए धन्यवाद! मैंने इसे स्वीकार करने की कोशिश की, लेकिन ऐसा लगता है कि मुझे कुछ मिनट इंतजार करने की ज़रूरत है! जबकि घड़ी इसे स्वीकार करने पर झुकती है वैसे भी आप प्रत्येक भाग क्या कर रहे हैं इस पर विस्तृत कर सकते हैं? मैं आपके उपयोग के द्वारा सबसे उलझन में हूँ। '[[' निर्दिष्ट क्या है? साथ ही, स्पष्ट रूप से निर्दिष्ट करने में अंतिम तर्क क्या है? मैं आर के लिए नया हूं ... – mjnichol

+2

@mjnichol - लंबे हाथ में, आप लिख सकते हैं: 'sapply (list.of.lists, function (x) x [[1]])' - यह सिर्फ पहले तत्व को निकालने वाला है प्रत्येक सूची और उसके बाद उसे एक वेक्टर के रूप में लौटाया जाता है जिसे फिर 'ऑर्डर' में पास किया जाता है। जैसे - 'एक [[1]]' और ''[[' (ए, 1)' बराबर हैं। – thelatemail

+0

आह, मैं उतना ही लगा। धन्यवाद! – mjnichol

1

आप अपने list.of.lists में संरचना का एक बहुत कुछ है। वहां से,

list.2d <- sapply(list.of.lists, cbind) 

और संभवतः इस तरह एक डेटा फ्रेम में: अन्य प्रसंस्करण आपको बस इतना करना आधार पर, आप एक दो आयामी सूची में यह बहुत की तरह बनाने के लिए चाहते हो सकता है

df <- data.frame(t(list.2d)) 

(तकनीकी रूप से, डेटा फ्रेम एक प्रकार की सूची है।) कॉलम के किसी विशेष सेट द्वारा सॉर्टिंग, और तत्वों के सबसेट निकालने के बाद थोड़ा और पारंपरिक हो सकता है। (हालांकि मुझे वास्तव में यहां स्वीकृत उत्तर भी पसंद है।)

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