2013-02-19 64 views
15

यह कुछ आसान तरीका में एक सूची में डेटा फ्रेम का एक बहुत डाल करने के लिए संभव है? बजाय निम्नलिखित तरीके से की तरह मैन्युअल रूप से प्रत्येक नाम लिखने के होने का अर्थ:रखो एकाधिक डेटा फ्रेम (स्मार्ट तरीका)

list_of_df <- list(data_frame1,data_frame2,data_frame3, ....) 

मैं सभी डेटा फ्रेम अपने काम अंतरिक्ष में लोड कर दिया है। मैं (प्रत्येक डेटा फ्रेम पर एक ही कार्रवाई करने) सभी डेटा फ्रेम से अधिक पाश करने के लिए सूची का उपयोग करने जा रहा हूँ।

+0

@Imo और @EdChum; यह प्रश्न उस प्रश्न से पहले पोस्ट किया गया था जिसे आपने इसे एक गणराज्य के रूप में चिह्नित किया था। कृपया तिथियों को देखें! –

उत्तर

20

आप इस प्रकार get साथ ls() उपयोग कर सकते हैं:

l.df <- lapply(ls(), function(x) if (class(get(x)) == "data.frame") get(x)) 

यह आपके वर्तमान वातावरण कार्यक्षेत्र से सभी data.frames लोड होगा।

वैकल्पिक रूप से, @agstudy के रूप में पता चलता है, आप पैटर्न सिर्फ data.frame रों आप की आवश्यकता लोड करने के लिए उपयोग कर सकते हैं।

l.df <- lapply(ls(pattern="df[0-9]+"), function(x) get(x)) 

भार वर्तमान वातावरण है कि df संख्या की किसी भी राशि के लिए 1 के बाद से शुरू होता है में सभी data.frame रों।

+0

क्या वस्तुओं के नामों को बरकरार रखने का कोई तरीका है? यह विधि अच्छी तरह से काम करती है लेकिन डेटाफ्रेम नाम निकाले गए नहीं हैं। क्या उन्हें अलग से असाइन करने का कोई बेहतर तरीका है? धन्यवाद। – Anusha

+0

@Anusha, क्षमा करें, मुझे तुम्हारा क्या मतलब नहीं है। क्या आप कह रहे हैं कि आप सूची के प्रत्येक तत्व के नाम के साथ डेटा.फ्रेम की एक सूची चाहते हैं जो उन डेटा के नाम हैं। फ्रेम? – Arun

+0

हां। वस्तुओं को उनके नाम से पहचाना गया है लेकिन सूची में शामिल नहीं किया जा रहा है। मैं इस चरण में चुने गए डेटाफ्रेम के नाम असाइन करना पसंद करूंगा। – Anusha

6

उदाहरण के लिए आप एक विशिष्ट पैटर्न के साथ ls उपयोग कर सकते हैं।

कुछ data.frames: उदाहरण के लिए:

data.frame1 <- data.frame() 
data.frame2 <- data.frame() 
data.frame3 <- data.frame() 
data.frame4 <- data.frame() 

list(ls(pattern='data.fra*')) 
[[1]] 
[1] "data.frame1" "data.frame2" "data.frame3" "data.frame4" 
+4

इससे आपको ऑब्जेक्ट की सामग्री नहीं, नामों की एक सूची मिलती है। –

6

अब तक सबसे आसान समाधान एक सूची जहाँ आप उन्हें बनाने में data.frame की डाल करने के लिए किया जाएगा।

list_df = lapply(list_object_names, get) 

जहां निर्माण कर सकता है आप इस तरह की सूची (10 वस्तुओं के लिए उदाहरण):

list_object_names = sprintf("data_frame%s", 1:10) 

या अपने वर्तमान कार्यक्षेत्र में सभी वस्तुओं को प्राप्त लेकिन, आप वस्तु नाम के एक चरित्र सूची है यह मानते हुए कि एक सूची में:

list_df = lapply(ls(), get) 
names(list_df) = ls()