2010-08-03 26 views
13

Tüm verileri .txt biçiminde görselleştirmek için R kullanıyorum. Bir dizinde birkaç yüz dosya var ve hepsini tek bir tabloda tek bir masaya yüklemek istiyorum.Birden çok .txt dosyasını R'ye nasıl okuyorsunuz?

Herhangi bir yardım?

DÜZENLEME: dosyaları listeleme

bir sorun değildir. Ama listeden içeriğe gitmekte sorun yaşıyorum. Ben here kod bazı denedim ama bu kısmı ile bir hatayı alıyorum:

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

bu sorun büyük takdir açıklamak istiyorum kod

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

Herhangi parçacıkları söyleyerek.

+0

sorun kullanmak txt' bir işlev değil 'dır. İşaretlediğiniz bağlantı "read.csv" işleviyle ilgilidir. – Wok

cevap

4

Teşekkür!

Bu arada, kendi başıma bir yöntemi de hackledim. herhangi yararlıdır bana bildirin: READTEXT paketi:

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() işlevleri için yardım konusuna bakın: list.files(). Bu, üzerinde döngü yapabileceğiniz, normal ifadelerle filtrelenen dosyaların bir listesini almanıza olanak tanır.

Bunların hepsini tek seferde istiyorsanız, öncelikle bir dosyada içerik bulundurmanız gerekir. Bir seçenek cat'u kullanarak tüm dosyaları stdout'a yazmak ve popen() kullanarak okumak olacaktır. Daha fazla bilgi için help(Connections)'a bakın.

+0

teşekkürler, ama hala net değil. Düzenlemeyi kontrol et :) –

+0

Peki, 'txt' oluşturun. –

25

Bu deneyebilirsiniz: tüm cevaplar için

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

Hafif temizleyici: 'lapply (filelist, FUN = read.table, header = TRUE)' – RockScience

2

şimdi bunu yapmak için gerçekten çok kolay bir yolu yoktur.

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

Gerçekten bu kadar kolay.

0

birden fazla dosya okuyup tidyverse den purrr::map_df ve readr::read_table2 kullanma data.table paketin

# 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") 

den fread kullanarak tek bir veri çerçevesi veya data.table

içine koymak için iki hızlı yolu vardır paket:

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") 

Not: dosya adları temizlemek basename veya gsub fonksiyonlarını

İlgili konular