2017-03-20 5 views
1

Rを使用して1つのデータセットに数千の単一XMLファイルをインポートしようとしています。Rを使用して1つのXMLを1つの大きなCSVにインポートする

現在、私は使用しています:

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

これが動作しているようですが、私は、単一の大規模なXMLまたはCSVファイルのいずれかにXMLファイルを取得するためのより良い方法があるに違いありません知っています。しかし

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 

あなたは、パフォーマンスの問題がある場合でも、プロセス並列化することができます:

# 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 
を右方向への任意のポインタは心から私がきちんと働いていた数ヶ月前に何かをした

答えて

1

を高く評価しています

あなたのマシンの数によりますが、マシンが速くx時間がかかることがあります)

+0

これは私がやっていたものよりもきれいで、このPCには6つのコアだからX6 :)ありがとう! – Flufylobster

+0

あなたはようこそ... – Codutie

関連する問題