2010-08-03 15 views
13

मैं कुछ डेटा को विज़ुअलाइज़ करने के लिए आर का उपयोग कर रहा हूं, जिनमें से सभी .txt प्रारूप में हैं। एक निर्देशिका में कुछ सौ फाइलें हैं और मैं इसे एक शॉट में एक टेबल में लोड करना चाहता हूं।आप आर में एकाधिक .txt फ़ाइलों में कैसे पढ़ते हैं?

कोई मदद?

संपादित करें:

फ़ाइलों को सूचीबद्ध करना कोई समस्या नहीं है। लेकिन मुझे सूची से सामग्री में जाने में परेशानी हो रही है। मैं here से कोड के कुछ कोशिश की है, लेकिन मैं इस भाग के साथ एक बग मिल:

all.the.data <- lapply(all.the.files, txt , header=TRUE) 

कह

Error in match.fun(FUN) : object 'txt' not found 

कोड के किसी भी स्निपेट जो स्पष्ट होगा इस समस्या को बहुत सराहना की जाएगी।

+0

समस्या का उपयोग करने के txt' कार्य नहीं है 'है। जिस लिंक को आपने इंगित किया है वह 'read.csv' फ़ंक्शन के बारे में है। – Wok

उत्तर

4

सभी प्रश्नों के उत्तर के लिए धन्यवाद!

इस बीच, मैंने अपने तरीके पर एक विधि भी हैक की। मुझे पता है अगर यह किसी भी उपयोगी है दो: readtext पैकेज:

library(foreign) 

setwd("/path/to/directory") 

files <-list.files() 

data <- 0 


for (f in files) { 

tempData = scan(f, what="character") 

data <- c(data,tempData)  

} 
4

फ़ंक्शन dir() उर्फ ​​list.files() कार्यों के लिए सहायता देखें। यह आपको फ़ाइलों की एक सूची प्राप्त करने की अनुमति देता है, संभवतः नियमित अभिव्यक्तियों द्वारा फ़िल्टर किया जाता है, जिस पर आप लूप कर सकते हैं।

यदि आप उन्हें सभी एक साथ चाहते हैं, तो आपको पहले एक फ़ाइल में सामग्री रखना होगा। पर सभी फ़ाइलों को टाइप करने के लिए cat का उपयोग करना एक विकल्प होगा और popen() का उपयोग करके पढ़ें। अधिक के लिए help(Connections) देखें।

+0

धन्यवाद, लेकिन अभी भी स्पष्ट नहीं है। मेरे संपादन की जांच करें :) –

+0

ठीक है, 'txt' बनाएं। –

25

आप इस कोशिश कर सकते हैं:

filelist = list.files(pattern = ".*.txt") 

#assuming tab separated values with a header  
datalist = lapply(filelist, function(x)read.table(x, header=T)) 

#assuming the same header/columns for all files 
datafr = do.call("rbind", datalist) 
+0

थोड़ा क्लीनर: 'लापरवाही (फ़ाइलसूची, FUN = read.table, header = TRUE) ' – RockScience

2

अब यह करने के लिए एक सच में, सच आसान तरीका नहीं है।

readtext::readtext("path_to/your_files/*.txt") 

यह वास्तव में इतना आसान है।

0

एक से अधिक फ़ाइलों को पढ़ने और tidyverse से data.table पैकेज

# List all txt files including sub-folders 
    list_of_files <- list.files(path = ".", recursive = TRUE, 
          pattern = "\\.txt$", full.names = TRUE) 

    library(data.table) 

    # Read all the files and create a FileName column to store filenames 
    DT <- rbindlist(sapply(list_of_files, fread, simplify = FALSE), 
         use.names = TRUE, idcol = "FileName") 

से एक भी डेटा फ्रेम या data.table

fread का उपयोग में डाल purrr::map_df और readr::read_table2 का उपयोग करने के लिए दो तेजी से तरीके हैं पैकेज:

library(tidyverse) 

    # Read all the files and create a FileName column to store filenames 
    df <- list_of_files %>% 
    set_names(.) %>% 
    map_df(read_table2, .id = "FileName") 

नोट:, फ़ाइल नाम को साफ basename या gsub कार्यों

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