Définir comment le texte est affiché

Chargement des packages

library(flextable)
library(charlatan)
use_df_printer()

Simulation d’un jeu de données

Nous allons simuler un jeu de données avec le package ‘charlatan’ dédié à cette tâche.

set.seed(007)

n <- 10
people <- data.frame(
  name = ch_name(n = n, locale = "fr_FR"),
  birthday = as.Date(as.POSIXct(unlist(ch_date_time(n = n)), origin = "1970-01-01")) + 20*365,
  n_children = as.integer(ch_integer(n = n, min = 0, max = 4)),
  money = rnorm(n = n, mean = 500, sd = 22),
  weight = runif(n = n, min = 50, max = 90),
  height = rnorm(n = n, mean = 170, sd = 5),
  n_peanuts = ch_integer(n = n, min = 500000, max = 1225193),
  eye_color = as.factor(sample(c("blue", "green", "dark"), prob = c(.15, .3, .55), size = n, replace = TRUE)),
  stringsAsFactors = FALSE
) 
people[2:4, 4] <- NA_real_
people

Flextable

Les valeurs par défaut

Tout d’abord, définissons une opération de post-traitement qui personnalisera l’affichage HTML. Cette fonction sera exécutée systématiquement avant l’impression du tableau.

set_flextable_defaults(
  post_process_html = function(x){
    theme_tron(x) |> autofit()
  }
)

Définir comment afficher le contenu des cellules

Nous pouvons maintenant nous concentrer sur le formattage du contenu des cellules. Les fonctions colformat_* sont dédiées à cette tâche et sont simples d’utilisation.

ft <- flextable(people) |> 
  colformat_double(digits = 1,
    big.mark = " ", decimal.mark = ",",
    na_str = "na", j = ~ . - money) |> 
  colformat_double(digits = 0,
    big.mark = " ", 
    suffix = "€", 
    na_str = "unknown", j = "money") |> 
  colformat_int(j = "n_children", prefix = "# ") |> 
  colformat_char(j = "eye_color", prefix = "color: ") |> 
  colformat_date(fmt_date = "%d/%m/%Y")
ft