#' compileDatabase.MPI
#'
#' adds dataset to soilcarbon database
#'
#' @param dataset_directory directory where compeleted and QC passed soilcarbon datasets are stored
#' @param write_report T or F whether or not to write a log file of the compilation
#' @param write_out T or F whether or not to write the compiled database file as csv in dataset_directory
#' @export
#' @import devtools
#' @import stringi
#'
compileDatabase.MPI <- function(dataset_directory, write_report=F, write_out=F){
requireNamespace("stringi")
if (write_report==T){
outfile<-paste0(dataset_directory, "compilation_log.txt")
reportfile<-file(outfile)
sink(reportfile)
sink(reportfile, type = c("message"))
}
data_files<-list.files(dataset_directory, full.names = T)
data_files<-data_files[grep("xlsx", data_files)]
template_file<-system.file("extdata", "Master_template_v9_MPI_entry_name_test_all.xlsx", package = "soilcarbon")
template<-read.soilcarbon(file=template_file, format = "MPI",template=T)
template_flat<-Reduce(function(...) merge(..., all=T), template)
flat_template_columns<-colnames(template_flat)
working_database<-template_flat
cat("\nCompiling data files in", dataset_directory)
cat("\n", rep("-", 30),"\n\n")
for(d in 1:length(data_files)){
cat("\n\nchecking", basename(data_files[d]),"...")
out<-QAQC(file = data_files[d], writeQCreport = T)
cat("\n ", out, "errors generated by QAQC")
if (out>0) next
soilcarbon_data<-read.soilcarbon(data_files[d], format="MPI")
flat_data<-Reduce(function(...) merge(..., all=T), soilcarbon_data)
flat_data[] <- lapply(flat_data, as.character)
flat_data[, setdiff(flat_template_columns, colnames(flat_data))]<-NA
setdiff(colnames(working_database), colnames(flat_data))
setdiff(colnames(flat_data), colnames(working_database))
working_database<-rbind(working_database, flat_data)
}
working_database[]<-lapply(working_database, function(x) stri_trans_general(x, "latin-ascii"))
working_database[]<-lapply(working_database, type.convert)
soilcarbon_database<-working_database
if (write_report==T){
sink(type="message")
sink()
cat("\n Compilation report saved to", outfile,"\n")
}
return(soilcarbon_database)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.