R/formatr.R

Defines functions formatr

Documented in formatr

#' Format des données numériques.
#'
#' Combinaison des fonctions `format()` et `round()`.
#'
#' `x` doit être un nombre ou un vecteur `numeric`.
#'
#' Si `nsmall` n'est pas défini, prend la valeur de `digits`.
#'
#' @param x Nombre ou vecteur à formater.
#' @param digits Nombre de décimales à afficher même si le nombre se termine par des zéros.
#' @param decimal.mark Symbole pour afficher les décimales.
#' @param big.mark Indiquant les multiple de 10e3.
#' @param ... Autres arguments de la fonction [base::format()].
#'
#' @return chaine de caractères
#' @keywords internal
#' @export
#' @examples
#' formatr(1.123)
#' formatr(1.123, 4)
#' formatr(1.123, 4, decimal.mark = "&&")
#' formatr(1233.123, big.mark = "&")
#'
#' formatr("ceci est du texte")  # ERREUR
formatr <- function(x, digits = 2, decimal.mark = ",", big.mark = " ", nsmall = NULL, ...){
  if(is.null(nsmall)) nsmall <- digits  # nsmall devient le nombre de décimale si NULL
  if(!is.numeric(x)) stop("x n'est pas de type NUM.")
  return(
    sapply(x, function(x){  # permet d'appliquer la fonction sur une colonne ou un vecteur.

      if(!is.numeric(x)){
        return(x)  # gérer les NA, NaN... - ne pas les transformer en "texte"
      } else {
        return(format(round(x, digits),
                      nsmall = nsmall,
                      decimal.mark = decimal.mark,
                      big.mark = big.mark,
                      ...))
      }

    })
  )
}
guiboucher/INESSS-inesss documentation built on April 20, 2020, 10:47 p.m.