R/saveX.R

Defines functions saveX

Documented in saveX

#' Save dataset
#'
#' Enregistre le dataset à partir de la fonction \code{\link[data.table]{fwrite}} en vérifiant si les symbole `sep` et `dec` ne posent pas de problèmes.
#'
#' @param x dataset à enregistrer.
#' @param file Emplacement et nom du fichier.
#' @param sep Symbole séparant les valeurs. Par défaut `';'`.
#' @param dec Symbole indiquant les décimales. Par défaut `'.'`.
#' @param ext Extension du fichier. `.txt` ou `.csv`.
#' @param ... Autres arguments de la fonction \code{\link[data.table]{fwrite}}.
#'
#' @import data.table
#' @importFrom stringr str_detect
#' @export
#' @examples
#' saveX(mtcars, "nomSurDisqueDur")
saveX <- function(x, file = "", sep = ";", dec = ".", ext = c(".txt", ".csv"), ...){
  # Vérification si la BD peut être sauvegardé
  check <- newArgCheck()
  for(col in colnames(x)){  # vérification pour chaque colonne
    if(is.character(x[[col]])){  # si la colonne est de type CHR
      if(any(str_detect(x[[col]], sep))){
        addError(paste0("La colonne ",col," ne peut contenir le caractère : ",sep," (sep)."), check)
      }
      if(any(str_detect(x[[col]], dec))){
        addError(paste0("La colonne ",col," ne peut contenir le caractère : ",dec," (dec)."), check)
      }
    }
  }
  if(length(ext) == 2) ext <- ext[1]
  if(!ext %in% c(".txt", ".csv")) addError("Les valeurs de ext sont '.txt' ou '.csv' .")
  finishArgCheck(check)  # vérification et messages d'erreur s'il y en a

  fwrite(x, file = paste0(file, ext), sep = sep, dec = dec, ...)  # enregistrement de la BD si aucune erreur
}
guiboucher/INESSS-inesss documentation built on April 20, 2020, 10:47 p.m.