2012-08-25 15 views
48

मेरे पास कुछ 10,000 तत्वों की लंबी सूची है। मान लें कि मैं केवल तत्वों, 5, 7, और 9 का चयन करना चाहता हूं। मुझे यकीन नहीं है कि मैं लूप के बिना ऐसा कैसे करूंगा।किसी सूची से कई तत्वों का चयन करें

मैं mylist[[c(5,7,9]] जैसे कुछ करना चाहता हूं लेकिन यह काम नहीं करता है। मैंने lapply फ़ंक्शन का भी प्रयास किया है लेकिन वह काम करने में सक्षम नहीं है।

+10

'?" में मिले दस्तावेज से [["': * '[', '[[' और '$' के बीच सबसे महत्वपूर्ण अंतर यह है कि '[' एक से अधिक तत्वों का चयन कर सकता है जबकि अन्य दो एक तत्व का चयन करें। * – A5C1D2H2I1M1N2O1R2T1

+0

@ mrdwab की टिप्पणी के आगे, यह आर की वेक्टरिज्ड दुनिया है, "एक तत्व" एक वेक्टर हो सकता है! – seancarmody

उत्तर

93

mylist[c(5,7,9)] इसे करना चाहिए।

आप चाहते हैं कि उपन्यास परिणाम सूची के उपन्यासकार के रूप में लौटे; आप इसका उपयोग नहीं करते [[]] (या इसके बजाय, फ़ंक्शन [[ है) - क्योंकि डसन ने टिप्पणियों में उल्लेख किया है, [[ तत्व को पकड़ता है।

+6

बस कुछ और विवरण जोड़ने के लिए - "[" एक उपन्यास लौटाएगा, इसलिए यह समझ में आता है कि आप इसके साथ कई इनपुट का उपयोग कर सकते हैं। "[[" वास्तव में तत्व को स्वयं ही ले जाएगा, इसलिए यह केवल एक इनपुट ले सकता है क्योंकि यह एक सूची नहीं लौटा रहा है (जब तक कि तत्व स्वयं एक सूची न हो)। – Dason

+0

क्या यह वेक्टरकृत है? मेरे पास दो सूचियां हैं: 'बी' में 10 मिलियन तत्व हैं। 'filter_bins' एक सूची है जहां प्रत्येक तत्व एक अनुक्रमणिका है। इसलिए केवल उसी सूचकांक के साथ 'बी' से तत्व प्राप्त करने के लिए, मेरे पास 'लापली (फ़िल्टर_बिन्स, फ़ंक्शन (x) बी [x,])' इसलिए b [x,] केवल पंक्तियों का सबसेट देता है (जहां प्रत्येक तत्व filter_bins द्वारा चुना जाता है) .. मुझे उम्मीद है कि यह समझ में आता है। मेरा सवाल यह है कि यह बहुत धीमा है – masfenix

+0

@masfenix आपको विवरण का वर्णन करने वाला एक नया प्रश्न उत्पन्न करना चाहिए। –