#' Sauvegarde un fichier
#'
#' Sauvegarde un tableau R en format .CSV. À utiliser idéalement pour de grosse base de données.
#'
#' Pas besoin d'inscrire \code{.csv} à l'argument \code{file}.\cr\cr
#' Il est conseillé d'utiliser \code{sep = ","} si vous voulez lire la base de données dans EXCEL et que celui-ci est en français.\cr\cr
#' Si le tableau a plus de 1048576 lignes ou 16384 colonnes, la visualisation du tableau sera partielle avec le logiciel EXCEL.
#'
#' @param x data à sauvegarder.
#' @param file "path/nomfichier". path est facultatif.
#' @param sep Séparateur des colonnes.
#' @param dec Séparateur décimal.
#' @param ... Autres arguments de la fonction \code{\link[data.table]{fwrite}} du package \code{data.table}.
#'
#' @return fichier .CSV.
#' @import data.table
#' @import stringr
#' @export
#' @examples
#' saveX(mtcars, "mtcars")
#' saveX(mtcars, "mtcars", sep = "/", dec = ",")
#' saveX(mtcars, "mtcars", rownames = TRUE, colnames = FALSE)
saveX <- function(x, file, sep = ";", dec = ",", ...){
#### Verification ####
ArgCheck()
if(!is.data.frame(x)) addError("'x' n'est pas de type DATA.FRAME.", argcheck)
finishArgCheck(argcheck)
x <- as.data.table(x)
if(!is.character(file)) addError("'file' doit être de type CHARACTER.", argcheck)
if(!is.character(sep)) addError("'sep' n'est pas de type CHARACTER.", argcheck)
if(sep == "") addError("'sep' ne peut être vide : ''.", argcheck)
if(!is.character(dec)) addError("'dec' n'est pas de type CHARACTER.", argcheck)
if(dec == "") addError("'dec' ne peut être vide : ''.", argcheck)
if(sep == dec) addError("'sep' et 'dec' ne peuvent avoir la même valeur", argcheck)
finishArgCheck(argcheck)
# sep ne doit pas être un charactère d'une valeur dans une colonne de type CHR
for(j in names(x)){
# Si c'est une colonne de type numeric, pas de vérification nécessaire
if(is.numeric(x[[j]])) next # passe au prochain
# Si la valeur de sep est incluse dans les valeur d'une colonne = ERREUR
if(any(str_detect(sep, x[[j]]))){
addError(paste0("La valeur de 'sep' (",sep,") est incluse dans la colonne '",j,"'."), argcheck)
}
}
finishArgCheck(argcheck) # Renvoie des messages de vérifications s'il y a lieu
#### Code ####
fwrite(x, paste0(file,".csv"), sep = sep, dec = dec, ...)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.