R/read_write.R

Defines functions read7zfeather write7zfeather read7z write7z

Documented in read7z read7zfeather write7z write7zfeather

#' Use data.table::fwrite to write and zipped a file
#' @import data.table
#' @import parallel
#' @param data file to export
#' @param filename path to be exported to
#' @param seven_zip 7z installation path
#' @param sep column seperator
#' @family read_write
#' @export
write7z <- function(data, filename, seven_zip = sevenzip_path, sep = ","){

    sevenzip_path <- NULL

    file <- paste0(getwd(), "/", gsub(".7z", 
        "", basename(filename), ignore.case = T))
    
    data.table::fwrite(data, file, sep = sep)
    gc()
    system(paste0(seven_zip, " a -aoa -mx7 -m0=LZMA2 -mmt", 
        parallel::detectCores(), " \"", filename, "\" \"", 
        file, "\""), ignore.stdout = TRUE)
    file.remove(file)
    return(TRUE)


}

#' Use data.table::fread to read a zipped file
#' @import data.table
#' @param file file to read
#' @param seven_zip 7z installation path
#' @family read_write
#' @export
read7z <- function(file, seven_zip = sevenzip_path){

    sevenzip_path <- NULL
    
    txtfile <- paste0(getwd(), "/", gsub(".7z", 
        "", basename(file), ignore.case = T))
    cmd <- paste0(seven_zip, " x \"", file, "\" -aoa -o\"", 
        getwd(), "\"")
    system(cmd, ignore.stdout = TRUE)
    dt <- data.table::fread(txtfile)
    file.remove(txtfile)
    return(dt)
}


#' Use feather::write_feather to write and zipped a file
#' @import feather
#' @import parallel
#' @param data file to export
#' @param filename path to be exported to
#' @param seven_zip 7z installation path
#' @family read_write
#' @export
write7zfeather <- function(data, filename, seven_zip = sevenzip_path){

    sevenzip_path <- NULL

    file <- paste0(getwd(), "/", gsub(".7z", 
        "", basename(filename), ignore.case = T))
    
    feather::write_feather(data, file)
    gc()
    system(paste0(seven_zip, " a -aoa -mx7 -m0=LZMA2 -mmt", 
        parallel::detectCores(), " \"", filename, "\" \"", 
        file, "\""), ignore.stdout = TRUE)
    file.remove(file)
    return(TRUE)

}

#' Use feather::read_feather to read a zipped file
#' @import data.table
#' @import feather
#' @param file file to read
#' @param seven_zip 7z installation path
#' @family read_write
#' @export
read7zfeather <- function(file, seven_zip = sevenzip_path){
    
    sevenzip_path <- NULL

    featherfile <- paste0(getwd(), "/", gsub(".7z", 
        "", basename(file), ignore.case = T))
    cmd <- paste0(seven_zip, " x \"", file, "\" -aoa -o\"", 
        getwd(), "\"")
    system(cmd, ignore.stdout = TRUE)
    dt <- data.table::data.table(feather::read_feather(featherfile))
    file.remove(featherfile)
    return(dt)
}
ANearchou/RDataScience documentation built on Dec. 17, 2021, 6:42 a.m.