R/beta.packing_as_rdata_list.R

Defines functions packing_as_rdata_list extract_rdata_list

extract_rdata_list <- 
  function(
           rdata,
           names = NA
           ){
    if(!file.exists(rdata))
      return()
    load(rdata)
    if(!is.na(names[1])){
      list <- list[names(list) %in% names]
    }
    return(list)
  }
packing_as_rdata_list <- 
  function(
           path,
           pattern,
           rdata,
           extra = NULL,
           rm_files = T,
           dedup = T
           ){
    file_set <- list.files(path, pattern = pattern)
    if(length(file_set) == 0)
      return()
    ## read as list
    list <- pbapply::pblapply(paste0(path, "/", file_set), read_tsv)
    names(list) <- file_set
    ## merge
    list <- c(extra, list)
    ## according to name, unique
    if(dedup){
      df <- data.table::data.table(name = names(list), n = 1:length(list))
      df <- dplyr::distinct(df, name, .keep_all = T)
      list <- list[df$n]
    }
    ## rm origin file sets
    if(rm_files){
      lapply(paste0(path, "/", file_set), file.remove)
    }
    ## save as rdata
    save(list, file = paste0(path, "/", rdata))
  }
chi-med-pro/MCnebula documentation built on March 28, 2023, 5:55 a.m.