2017-03-20 8 views
1

Ich versuche, mit R Tausende einzelner XML-Dateien in einen Datensatz zu importieren, wobei jede Zeile nur den Text für diese XML-Datei enthält.Verwenden Sie R, um Tausende einzelner XML-Dateien in 1 große CSV-Datei zu importieren

Derzeit verwende ich:

file_list <- list.files() 

    for (file in file_list){ 

     # if the merged dataset doesn't exist, create it 
     if (!exists("dataset")){ 
     dataset <- read.table(file, header=FALSE, stringsAsFactors=FALSE, 
    sep="\t") 
     } 
     # if the merged dataset does exist, append to it 
    if (exists("dataset")){ 
     temp_dataset <-read.table(file, header=FALSE, 
stringsAsFactors=FALSE, sep="\t") 
dataset<-rbind(dataset, temp_dataset) 
rm(temp_dataset) 
    }} 

Dies scheint zu funktionieren, aber ich weiß, es muss ein besserer Weg, um XML-Dateien entweder in einer einzigen großen XML oder CSV-Datei. Alle Hinweise auf die richtige Richtung geschätzt aufrichtig

Antwort

1

ich etwas tat, vor ein paar Monaten, die richtig gearbeitet:

require("data.table") 

# files path 
setwd("path/to/your_data") 

# list containing your file names 
file_list = list.files() 

# read data and save in a list 
mydata <- lapply(file_list, read.table, header = FALSE, sep = "\t") 
mydata <- rbindlist(mydata) # merge list to one data frame 

Allerdings, wenn Sie Performance-Probleme haben, können Sie sogar parallelisieren den Prozess:

# reading data in parallel cores 

require(parallel) 

no_cores <- detectCores() 
cl <- makeCluster(no_cores) 
clusterEvalQ(cl, {library("parallel")}) # install dependencies in cores 
clusterExport(cl=cl, varlist=c("file_list")) # global variables 
mydata <- parLapply(cl, file_list, read.table, header = FALSE, sep = '\t') 
mydata <- rbindlist(mydata) # merge list to one data frame 

abhängig von der Anzahl der Kerne Ihrer Maschine kann es x Zeit schneller sein;)

+0

Danke funktioniert und ist sauberer als was ich tat, auch dieser PC hat sechs Kerne also X6 :) danke !!! – Flufylobster

+0

Gern geschehen ... – Codutie

Verwandte Themen