我正在尝试使用R将数千个单个XML文件导入到一个数据集中,其中每一行只是该xml文件的文本。
目前我正在使用:
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文件放入单个大型XML或CSV文件中。我们非常感谢任何指向正确方向的指示
答案 0 :(得分:1)
几个月前我做了一些正常工作的事情:
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
取决于您的机器拥有的核心数量,它可以快x倍;)