2011-09-11 11 views
5

मैं सिमुलेशन अध्ययन चला रहा हूं और परिणामों को कई पाठ फ़ाइलों से संसाधित करने और सहेजने की आवश्यकता है। मेरे पास ऐसे तरीके से व्यवस्थित डेटा है जहां उप निर्देशिकाएं हैं और प्रत्येक उप निर्देशिका में, मुझे प्रक्रिया करने और 1000 डेटा फ़ाइलों के लिए व्यक्तिगत परिणाम प्राप्त करने की आवश्यकता है। मैक्रोज़ का उपयोग करके एसएएस में करना बहुत आसान है। हालांकि, मैं आर के लिए नया हूं और यह नहीं समझ सकता कि ऐसा कैसे किया जाए। नीचे मैं जो करने की कोशिश कर रहा हूं वह नीचे है।प्रोसेसिंग के लिए आर में एकाधिक निर्देशिकाओं से कई फाइलें कैसे पढ़ सकते हैं?

DATA Folder-> DC1 -> DC1R1.txt ... DC1R1000.txt 
       DC2 -> DC2R1.txt ... DC2R1000.txt 

किसी भी मदद की बहुत सराहना की जाएगी!

+0

'list.files' आज़माएं। http://stackoverflow.com/search?q=%5Br%5D+list.files –

उत्तर

7

मैं अभी आर के साथ एक कंप्यूटर के पास नहीं कर रहा हूँ, लेकिन फाइल से संबंधित कार्यों के लिए सहायता पढ़ें:

dir समारोह फ़ाइलों और निर्देशिकाओं सूची जाएगा। इसमें एक पुनरावर्ती तर्क है। list.filesdir के लिए उपनाम है। file.info फ़ंक्शन आपको बताएगा (अन्य चीजों के साथ) यदि कोई पथ निर्देशिका है और file.path पथ भागों को जोड़ देगा।

basename और dirname कार्य भी उपयोगी हो सकता है।

ध्यान दें कि इन सभी कार्यों vectorized कर रहे हैं।

# Make a function to process each file 
processFile <- function(f) { 
    df <- read.csv(f) 
    # ...and do stuff... 
    file.info(f)$size # dummy result 
} 

# Find all .csv files 
files <- dir("/foo/bar/", recursive=TRUE, full.names=TRUE, pattern="\\.csv$") 

# Apply the function to all files. 
result <- sapply(files, processFile) 
+0

आपके सभी प्रतिक्रियाओं के लिए धन्यवाद! @ टॉमी ..... आपका कोडिंग अब तक काम कर रहा है .... उंगलियों को पार कर गया .... मेरे पास प्रत्येक शर्त के तहत 1000 अनुरूपित फाइलों के साथ 768 डेटा स्थितियां हैं। प्रक्रिया में थोड़ी देर लग जाएगी, इसलिए मैं एक बार समाप्त होने पर एक स्थिति दूंगा। – Stefanie

0

आप पर्ल के glob() समारोह का उपयोग कर सकते फ़ाइलों की एक सूची प्राप्त करें और का उपयोग कर अनुसंधान को भेजने के लिए, उदाहरण के लिए, RSPerl के इंटरफ़ेस:

संपादित अब एक कंप्यूटर पर है, तो यहाँ एक उदाहरण है।

+0

हाय लेटमार। मैं पर्ल से परिचित नहीं हूँ। मैं एक सांख्यिकीविद् हूं और इस तरह का उपयोग करने की आवश्यकता नहीं है। हालांकि .... मैंने सुना है कि यह काफी शक्तिशाली है। – Stefanie

3

आप फ़ाइलों में से प्रत्येक पर एक ही विश्लेषण चलाने की आवश्यकता है, तो आप उन्हें एक शॉट में list.files(recursive = T) का उपयोग कर पहुँच सकते हैं। यह माना जा रहा है कि आप पहले से ही अपनी कार्यशील निर्देशिका Data Folder पर सेट कर चुके हैं। recursive = T उपनिर्देशिकाओं के भीतर सभी फ़ाइलों को भी सूचीबद्ध करता है।

+0

धन्यवाद रामनाथ। मैंने कभी सूचीबद्ध नहीं किया है। फाइलें लेकिन इसे आज़माएंगी। टॉमी का कोडिंग अब तक काम कर रहा है। – Stefanie

2

filenames <- list.files("path/to/files", recursive=TRUE) यह आपको एक फ़ोल्डर और उप फ़ोल्डरों के नीचे रहने वाली सभी फाइलें देगा।

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