2013-02-25 16 views
5

मैंने डेटा सेट की एक सूची में पढ़ा है और इसे एन कहा है। मैं क्या करना चाहता हूं एन और पंक्ति से डेटा सेट का सबसेट लेना आर में एक साथ बांधें। जब मैं rbind(n) पर जाने का प्रयास करता हूं तो यह मुझे तत्वों को वास्तव में डालने के बजाय डेटा सेट के सभी नामों का डेटा फ्रेम देता है एक दूसरे के नीचे सेट प्रत्येक डेटा का। मैं जो करना चाहता हूं वह डेटा सेट के सबसेट को बाध्य करता है जो एक आम नाम साझा करते हैं। उदाहरण के लिए, डेटा सेटों में से 18 "4." से शुरू होते हैं और मैं इन सभी को एक साथ बांधना चाहता हूं। क्या इसे करने का कोई आसान तरीका है?पंक्ति डेटा सेट का एक सेट बाध्यकारी?

उत्तर

11

चाहे आप करना चाहते हैं rbind(n[[1]],n[[2]],...) जो rbind(n) जैसा नहीं है।

आप इस को लिखने की जरूरत नहीं है, आप बनाना do.call का उपयोग करें और इस call

do.call(rbind, n) 

जो आदेश आप चाहते हैं चलेंगे निष्पादित कर सकते हैं। हालांकि, इस notoriously slow

आप data.table पैकेज से rbindlist का उपयोग एक ही बात बहुत तेजी से

library(data.table) 

rbindlist(n) 

करने के लिए कर सकते हैं केवल उन तत्वों चाहते हैं जिसका नाम 4

rbindlist(n[grep(names(n), pattern = '^4')]) 
+0

बहुत बढ़िया धन्यवाद जो मैं चाहता हूं! अब मैं इसे सबसेट के लिए कैसे कर सकता हूं, "4." वाली फाइलें कहें वास्तव में बिना किसी नाम के अपने नाम में कहीं भी यह देखने के लिए कि उन फाइलों की सूची में कौन सी संख्याएं हैं? – user1836894

+0

@ user1836894 क्या ये सूची के तत्वों के नाम हैं? – mnel

+0

हां वे हैं। मेरे पास फाइलों की एक सूची है और वे फाइलों के सबसेट से संबंधित नाम हैं। – user1836894

1

हैं के साथ शुरू है आप कई फाइलों को एकत्र करने का प्रयास करते हैं, आपको rbind.fill फ़्लीर पैकेज में फ़ंक्शन की आवश्यकता हो सकती है (यदि डेटाटाटेबल समतुल्य है तो मुझे नहीं पता)

ll <- list(a=data.frame(x=1,y=2,z=1), 
     b= data.frame(x=2,y=3), 
     c=data.frame(x=3:4,y=5)) 

library(plyr) 
Reduce(rbind.fill,ll[c('a','b')]) ## subset by list names and 
            ## apply recursively using Reduce 
    x y z 
1 1 2 1 
2 2 3 NA 
+0

मुझे एक rbind.fill समकक्ष के बारे में पता नहीं है, लेकिन मैंने कुछ लागू किया http://stackoverflow.com/a/15017231/1385941 – mnel

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