एक सूची से कई तत्वों का चयन करें


83

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

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


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

1
आगे @ mrdwab की टिप्पणी के अनुसार, यह R की वेक्टरकृत दुनिया है, "एक एकल तत्व" एक वेक्टर हो सकता है!
सीनकार्मोडी

जवाबों:


139

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

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


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

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

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

क्या उपरोक्त समाधान को dplyr जैसे कुछ के साथ किया जा सकता है :: select () और (कुछ पाठ ") शामिल हैं?
Derelict

3
@HermanToothrot आप नहीं। कम से कम सीधे तौर पर तो नहीं। आप जिन सूचकांकों को निकालना चाहते हैं, उन पर आप उदासीन या नीरस हो सकते हैं और तत्संबंधी तत्व को इसमें शामिल कर सकते हैं [[। लेकिन अगर आप कई तत्वों को निकालना चाहते हैं, तो वास्तव में आप एक [
सबलिस्ट को पकड़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.