---
title: "Changelog"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Changelog}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup, echo=FALSE, eval=FALSE}
library(fonctionr)
```
## fonctionr 0.5.0
Date : 2026-03-10
- Changement dans la manière de filtrer les données, permettant un gain de rapidité de \~30% dans la plupart des fonctions lors de l'usage de poids répliqués.
- La fonction `many_val_group()` peut désormais être parallélisée, permettant un gain de rapidité de \~30% avec des poids répliqués lorsque les calculs sont nombreux. Le gain est plus petit - voire négatif - lorsque les calculs sont peu importants. C'est la raison pour laquelle l'option est désactivée par défaut si l'estimation de la variance d'échantillonnage n'est pas réalisée à l'aide de poids répliqués.
- Changement des palettes par défaut des différentes fonctions, car MetBrewer et PrettyCols sont désormais définis comme des packages optionnels (ils ne sont pas automatiquement installés avec fonctionr, sauf si `dependencies = TRUE` est indiqué lors de l'installation).
## fonctionr 0.4.0
Date : 2026-01-27
- Ajout de la possibilité de définir des options globales grâce à la fonction `fonctionr_options()`.
- Nouveaux arguments pour les palettes et les couleurs.
- Séparation de la couleur unie et de la palette dans les arguments `col` (nouveau) et `pal`. Cette modification engendre une différence de comportement par rapport aux versions antérieures de `fonctionr` : la couleur unie définie dans `pal` ne fonctionnera plus et la couleur par défaut sera appliquée.
- Dans `distrib_continuous()` et `distrib_group_continuous()`, il y a plusieurs changements dans les arguments : `pal` devient `col_density` ; `pal_moustache` devient `col_moustache` ; `color` devient `col_border`. La raison de ce changement est lié à un impératif de cohérence entre les fonctions : l'argument `pal` est désormais réservé aux palettes de type qualitatif. Néanmoins pour des raisons de compatibilité, les anciens arguments demeurent dans la fonction, mais sont inactifs.
- Il n'est plus possible d'introduire des palettes issues du package [MoMAColors](https://github.com/BlakeRMills/MoMAColors), celui-ci n'étant pas sur CRAN.
- Introduction de l'argument `coef_font` pour multiplier la taille de toutes les polices de caractère dans les graphiques de toutes les fonctions.
- Un grand nombre de caractères spéciaux sont désormais utilisables dans le noms des groupes (du fait que `ggtext` a besoin d'un formatage en codes HTML, cela provoquait auparavant des bugs dans les graphiques).
- Les palettes de toutes les fonctions ont désormais la même direction (cohérence entre toutes les fonctions).
- Le thème par défaut de `theme_fonctionr()` devient `"fonctionr"`. La valeur `NULL` pour le theme crée désormais un design très proche du thème par défaut de ggplot (mais en gérant la taille de la police et le formatage permis par ggtext).
- Mise à jour des polices de caractère contenues dans `fonctionr` : la police Montserrat inclue dans le package peut désormais être formatée en italique et gras ; les polices 'Amatic' et 'Helvetica Neue' sont supprimées (du fait de la limite de 5Mo de CRAN).
## fonctionr 0.3.22
Date : 2026-01-10
- Simplification du code de `esth_graph()`, `many_val_group()`, `distrib_group_discrete()`, `central_group()` pour l'utilisation de `ggtext`.
- Simplification du code de création des palettes avec la fonction interne `create_palette()`.
## fonctionr 0.3.21
Date : 2026-01-05
- Simplification du code de `prop_group()` pour formater le label du total en gras avec le package `ggtext` (inspiration : ). Mise en italique du groupe *NA* par la même occasion. La fonction interne `relab_ggtext()` a été créée pour opérer cette simplification. Les autres fonctions doivent encore être modifiées dans le même sens.
## fonctionr 0.3.20
Date : 2025-12-26
- Correction temporaire d'un bug graphique provoqué par le passage à `ggplot 4.0`, qui impliquait que le **total** sur les graphiques (en gras) soit indiqué \*\* total \*\* (avec des astérisques). C'est le package `ggtext` qui est utilisé pour mettre en gras le total dans les graphiques. Or, `ggtext` n'est pas complètement compatible avec le nouveau fonctionnement de `ggplot 4.0` : l'héritage des propriétés ne se fait pas entre éléments S3 et S7 (voir : [ggtext and parsing html with latest version of ggplot · Issue #6752 · tidyverse/ggplot2](https://github.com/tidyverse/ggplot2/issues/6752)). Une solution temporaire a été ajoutée (à corriger lorsque `ggtext` sera mis à jour : [Update theme elements to S7 class system · Issue #128 · wilkelab/ggtext](https://github.com/wilkelab/ggtext/issues/128)).
## fonctionr 0.3.19
Date : 2025-11-03
- Ajout de nouvelles palettes dérivées des palettes continues : ce sont les mêmes avec plus de contraste, ce qui est plus adapté pour réaliser des cartes.
## fonctionr 0.3.18
Date : 2025-10-13
- Correction de l'ordre des couleurs pour la légende avec le `group.fill` activé pour `prop_group()` et `central_group()`.
## fonctionr 0.3.17
Date : 2025-06-28
- Ajout de la fonction `relab_cut()`.
## fonctionr 0.3.16
Date : 2025-05-17
- Le signe des décimales change désormais en fonction de la langue. La valeur de l'argument `lang` devient `NULL` par défaut pour les fonctions qui ont un argument `lang`.
## fonctionr 0.3.15
Date : 2025-04-29
- Ajout de la position `flip` dans `many_val_group()` pour intervertir les groupes et les indicateurs choisis sur le graphique.
## fonctionr 0.3.14
Date : 2025-03-27
- La fonction `distrib_group_discrete()` possède désormais un argument `reorder` (`TRUE` pour réordonner les groupes selon le premier level de la variable `quali_var`) et un argument `show_n` (`TRUE` pour afficher les effectifs de l'échantillon en dessous du pourcentage).
## fonctionr 0.3.13
Date : 2025-03-17
- La fonction `make_surface()` dispose de l'argument `linewidth_ci` pour régler l'épaisseur des IC.
## fonctionr 0.3.12
Date : 2025-02-16
- La fonction graphique `theme_fonctionr()` dispose maintenant de l'argument `grid.lines`, pour spécifier les lignes de la grilles à afficher (`"x"`, `"y"` ou `"both"`).
## fonctionr 0.3.11
Date : 2025-02-11
- Modification des fonctions qui calculent des totaux, pour afficher **en gras** le label ainsi que les indicateurs du total. Pour ce faire, le package `ggtext` est désormais utilisé ; il y a donc une dépendance en plus.
- La fonction `distrib_group_discrete()` affiche désormais l'unité `%` sur l'axe des x par défaut, c'est-à-dire lorsque l'unité est définie comme un espace vide (`""`) et que l'argument `scale` vaut `100`.
## fonctionr 0.3.10
Date : 2024-12-17
- Ajout de palettes spécifiques pour l'Observatoire de la Santé et du Social.
- Export de la fonction `official_pal()`.
- Ajout de la possibilité de désaturer, éclaircir ou foncer les palettes de couleur.
## fonctionr 0.3.9
Date : 2024-09-15
- Ajout de l'argument `lang` qui permet l'affichage des indications sur les graphiques en trois langues : français, néérlandais, anglais.
- Ajout d'exemples dans la documentation des fonctions.
## fonctionr 0.3.8
Date : 2024-09-04
- Ajout du calcul de totaux pour `central_group()` et `prop_group()` avec les `group.fill` activés.
- Ajout du calcul de totaux pour `distrib_group_d()` et `many_val_group()`.
- Ajout d'un `theme` "IWEPS" pour les graphiques.
- L'argument `show_lab` devient `show_labs` (avec un s) pour toutes les fonctions.
- L'argument de couleur `fill` devient `pal` pour toutes les fonctions (par cohérence).
## fonctionr 0.3.7
Date : 2024-08-04
- Modifications substancielles pour `central_group()` : ajout de la possibilité de faire des sous-groupes (argument `group.fill`) par groupe.
- Ajout de la possibilité dans `central_group()` de ne pas calculer le total.
## fonctionr 0.3.6
Date : 2024-07-20
- Ajout de la possibilité dans `prop_group()` de ne pas calculer le total.
- Dans `make_surface()`, l'option `position = "bottom"` change également la position de la surface minimale affichée lorsque `compare = T` (suggestion de Robin).
- Optimisation du code (très légère augmentation de la vitesse).
## fonctionr 0.3.5
Date : 2024-07-07
- Modifications substancielles pour `prop_group()` : ajout de la possibilité de faire des sous-groupes (argument `group.fill`) par groupe.
- La fonction `make_surface()` est terminée : documentation et checks.
- Modification du code relatif aux palettes de couleurs pour compatibilité avec la nouvelle version de `PrettyCols` (changement de nom d'un argument).
- Corrections mineures à divers endroits du code. Le check n'indique désormais plus d'erreur, warning ou note.
## fonctionr 0.3.4
Date : 2024-06-29
- Ajout de l'export excel pour `distrib_continuous()` et `distrib_group_continuous()`. De légères modifications des outputs de ces deux fonctions ont été apportées pour rendre l'export propre.
- Ajout de trois polices d'écriture dans `fonctionr` : `Helvetica Neue`, `League Gothic` et `Amatic`.
## fonctionr 0.3.3
Date : 2024-06-06
- Amélioration de l'affichage des aires de densité dans `distrib_group_continuous()` lorsque la palette est d'une seule couleur (on ne voit plus les limites des quantiles).
- Ajout des facets dans `make_surface()`.
- Mise à la ligne automatique de caption tous les 100 caractères dans toutes les fonctions.
## fonctionr 0.3.2
Date : 2024-05-27
- Correction d'un bug sur le reorder des valeurs dans `distrib_group_continuous()`.
## fonctionr 0.3.1
Date : 2024-05-25
- Correction d'un bug dans la plupart des fonctions sur le reorder des valeurs par la médiane des résultats utilisé pour les facets (la fonction est désormais écrite avec des guillemets : `FUN = "median"`. Sans cela, il y avait dans certains cas particuliers une erreur).
## fonctionr 0.3.0
Date : 2024-04-26
- La documentation a été complétée pour que le package puisse être utilisé par des personnes tierces. Le package commence à être diffusable.
- Le bug avec la ligne du geom_line qui est coupée pour `distrib_group_continuous()` est réglé.
- bug d'ordonnancement des facteurs réglé dans `esth_graph()`.
## fonctionr 0.2.13
Date : 2024-04-20
- Création de `make_surface()` comme fonction indépendante utilisable sur n'importe quel tableau de résultats.
- Ajout de la possibilité d'afficher le résultat d'un test statistique dans `esth_graph()`.
## fonctionr 0.2.12
Date : 2024-04-04
- Création de `distrib_continuous()` et `distrib_group_continuous()`.
- Modification du thème `theme_fonctionr()` pour qu'il soit plus adapté aux nouvelles fonctions.
## fonctionr 0.2.11
Date : 2024-03-17
- Réécriture du code de toutes les fonctions (sauf `esth_graph()` et `pivot_longer_survey()`) : simplification + structuration.
- Nouvelle logique des na.rm finalisée pour toutes les fonctions (différenciation de `na.rm.group` et `na.rm.facet`, introduction de `na.rm.var` pour `distrib_group_d()` et `distrib_d()`).
- Ajout de checks pour vérifier si la couleur/palette est valide : couleur/palette par défaut si la couleur introduite est invalide.
- Création d'une fonction interne de création de palettes, permettant de produire les palettes de différentes institutions (pour l'instant Vivalis et Perspective, pour tester).
## fonctionr 0.2.10
Date : 2024-03-15
- Ajout des argument `na.rm.facet` dans `prop_group()` et `central_group()`.
- Possibilité de mettre une couleur unie pour `many_val()`.
- Création de l'argument `na.vars` pour `many_val()` et `many_val_group()`.
## fonctionr 0.2.9
Date : 2024-03-05
- Ajout des palettes dans `many_val()`.
## fonctionr 0.2.8
Date : 2024-03-03
- Modification des checks pour voir si les variables indispensables existent bien dans `data` : simplification du code et message plus clair et utile pour l'utilisateur.
## fonctionr 0.2.7
Date : 2024-03-01
- Ajout de `many_val()` comme fonction plus générale qui englobe `many_prop()`. Il y a désormais la possibilité de calculer des moyennes et des médianes avec les alias `many_mean()` et `many_median()`.
- Plus de parcimonie pour l'import des packages extérieurs dans le namespace.
- Changement de nom des arguments : `na.var` devient `na.prop` et `facet.var` devient `facet`.
- Début de simplification du code dans un but de facilité pour la maintenance et les modifs futures.
## fonctionr 0.2.6
Date : 2024-02-22
- Ajout d'un check de l'expression dans `prop_group()`, évitant de produire des résultats incohérents.
## fonctionr 0.2.5
Date : 2024-02-19
- Implémentation du `trycatch()` sur le test statistique dans `prop_group()` : le test statistique est désormais bypassé si les conditions ne sont pas remplies et ne stoppe donc plus `prop_group()` en cas d'erreur.
## fonctionr 0.2.4
Date : 2024-02-17
- Implémentation de checks pour vérifier que les variables de `many_prop_group()` soient bien binaires, et pour éviter les variables à une modalité pour `quali_var` dans `distrib_group_discrete()`.
- Correction d'un bug dans `esth_graph()`.
## fonctionr 0.2.3
Date : 2024-02-17
- Implémentation de l'export excel pour `many_prop()` et `many_val_group()`.
## fonctionr 0.2.2
Date : 2024-02-14
- Implémentation du test statistique pour `distrib_discrete()`.
- Correction d'un bug découvert à cette occasion, qui empêchait de faire fonctionner `distrib_discrete()` avec `na.rm.group = FALSE`.
## fonctionr 0.2.1
Date : 2024-02-14
- Amélioration des fonctions internes de vérification de la validité des arguments. Celles-ci renvoient désormais un message plus clair pour l'utilisateur.
## fonctionr 0.2.0
- `prop_group()` : ajout de la possibilité de calculer des proportions en comptant les `NA` au dénominateur avec l'argument `na.var = "include"`. Dans ce cas, l'expression `prop_exp` peut contenir la fonction `is.na()` pour calculer la proportion de valeurs manquantes.
- `many_val_group()` : changement de l'ordre des labels pour que l'ordre des couleurs corresponde à l'ordre sur le graphique.
- Ajout d'exemples dans la documentation à partir des données SILC inclues dans le package laeken.
- Correction de bugs mineurs.
::: {style="border:1px; background-color:#f8f5e4; padding: 5px 10px 10px 10px; margin-bottom: 10px"}
## To do list
### Prioritaire (nécessités ou bugs)
#### En général
- **(Joël) Réécrire `export_excel()` =\> la fonction est un peu bordélique et le nom des arguments pas clairs.**
- **(Joël) Harmoniser les fonctions internes\
=\> `fonctionr_ggplot_labs()` utilise `type` pour désigner la fonction dans laquelle on se trouve, vs `fonction` pour `export_excel()` et `fonctionr_filter()` : future source de confusion pour maintenir le package.\
=\> Certaines conditions sont implicites, d'autres explicites -\> faire le même travail que François a fait sur `fonctionr_filter()`**
- **(Joël) Ajouter que pour supprimer xlab ou ylab, on puisse entrer `NA` et pas seulement "".\
*=\> Une fonction unique de labellisation des axes x et y a déjà été crée pour faciliter cet ajout.***
- **(François) Ajouter toutes les options dans `fonctionr_options()`, sauf les arguments avec données ou variables.\
=\> Ajouter parallel.**
- **(François) Revoir la doc de chaque fonction et le manuel par rapport aux changements. Voir ici pour savoir les différentes options possibles dans la doc : [https://r-pkgs.org/man.html](#0){.uri}.\
=\> Documenter la fonction `fonctionr_options()` (+ explication dans le manuel).\
=\> Changer la doc pour les palettes par défaut.**
- **(François) Créer un tableau joli en output (avec `flextable`).**
- BUG : si une variable de design == le nom d'un objet externe, ça fonctionne =\> APPROFONDIR ET REGLER CA ?
- Rendre l'usage non interactif (= la programmation via d'autres fonctions) possible =\> gros travail, usage de `rlang` à la place de `substitute()`.
- Mettre des conditions pour réaliser les tests (n min, distribution, variances égales...).
- Ajouter des checks pour les inputs :
- Pas mettre les mêmes colonnes dans les différents arguments ? (`group`, `var_distrib`, `facet_var`, etc.).
#### **distrib_c**
- **(Joël) Sélectionner uniquement les variables nécessaires pour minimiser la RAM utilisée (désactivé car bug ?)**
- Ajouter le test stat univarié avec comme H0 mu dans la population. Apparemment la fonction n'est pas pré-programmée dans `survey`, il faut la faire soi-même.
- Ajouter la possibilité de facets.
#### **distrib_group_c**
- **(Joël) Sélectionner uniquement les variables nécessaires pour minimiser la RAM utilisée (désactivé car bug ?)**
- **(Joël) Introduire la mise en forme avec ggtext =\> plus difficile ici car le `NA` a été tranformé en level. Réfléchir à la meilleure solution et revoir éventuellement la fonction.**
- **(François + Joël) Ajouter hauteur des densités proportionnelle aux effectifs pondérés.**
- Il y a un warning de la fonction `density()` qui dit que `Selecting bandwidth not using 'weights'`. La doc de density() dit : "automatic bandwidth selection will not take the weights into account and hence may be suboptimal."\
=\> Voir si c'est un problème ?
- Le groupe `NA` est transfomé en level du facteur de groupe. De ce fait, il n'apparaît pas toujours en dernier, notamment lorsque `reorder = T`. Régler ça (pas cohérent avec les autres fonctions).
- Faire en sorte que le nom du groupe soit toujours le même dans les sorties de la liste (pour le moment, parfois "group", parfois le nom de la variable) =\> implique de changer l'argument `by =` des `left_join()` dans le script, et donc le nommage des colonnes.
- Ajouter la possibilité de facets.
- La colonne `central` dans l'objet `dens` produit n'a pas de valeur `y_ridges`.
- Un peu cleaner le script : il y a des étapes inutiles qui pourraient être simplifiées, notamment dans la création des valeurs centrales.
- Ajouter la possibilité d'un total.
#### prop_group
#### central_group
- Bypasser l'erreur du test stat avec `tryCatch()`.
#### distrib_group_d
- **(François) Ajouter hauteur des barres proportionnelle aux effectifs pondérés.**
- Implémenter un test stat lorsqu'il y a des facets =\> via modélisation loglinéaire, mais j'ai un peu de mal à comprendre les erreurs de `survey` (erreurs fréquentes).
- Redondance du code avec total pour le `geom_text()` ?
#### many_val
- **(Joël) Conditions ajoutées pour définir la priorité de pal sur col =\> Voir avec François si c'est OK.\
=\> C'est idem pour `make_surface()`.**
- Les couleurs des palettes sont attachées à l'indicateur, mais pas à la position. De ce fait, lorsque `reorder = T`, l'ordre des couleurs de la palette n'est pas respecté =\> changer le comportement ?
#### many_val_group
- Le `NA` apparait en premier lorsque `position = "flip"` =\> Corriger, il doit apparaître en dernier.
- Améliorer l'alignement des effectifs avec `show_n = T` lorsque `position == "stack"`
- Redondance du code avec total pour le `geom_text()` ?
- Les couleurs des palettes sont attachées au groupe, mais pas à la position. De ce fait, lorsque `reorder = T`, l'ordre des couleurs de la palette n'est pas respecté =\> changer le comportement ?
- Fusionner `many_val_group()` et `many_val()` !
#### make_surface
- Ajouter la détection automatique des IC (possible si les colonnes sont du même nom que la valeur, mais terminant par `_low` et `_upp`).
- Ajouter les checks (penser le cas spécifique de `pvalue`).
- Lorsque facet, mieux penser l'alignement entre mêmes modalités ?
- Ajouter les arguments `dec` et éventuellement `scales`.
#### **esth_graph**
- Changer le nom.
- Ajouter le check pour l'argument `pvalue`.
- Régler le pb si multiples `NA` + voir si un pb se pose avec multiples totaux.\
=\> BUG : la condition stoppe si multiples `NAs` avec facettes même si 1 seul `NA` par facette (condition trop stricte =\> ça doit passer)
### Améliorations
#### En général
- Réécrire le code du test stat pour avoir la formule originale =\> possible avec `eval()`, voir code de `central_group()`.
- Créer une fonction de check des inputs indispensables (car redondance entre les 4 fonctions)\
*=\> Pour l'instant c'est fait "en dur" : difficultés de créer une fonction du fait de l'usage du tidyverse : il faut sans doute utiliser les fonctions de `rlang`.*
- Revoir la solution apportée dans `theme_fonctionr()` au bug de compatibilité entre `ggtext` et `ggplot 4.0` lorsque ggtext aura été mis à jour. Voir : .
#### distrib_group_d
- Ajouter les effectifs totaux par groupe ? (dans le nom du groupe ?)
### Notes
#### Filtrage
Il semble qu'il faille filtrer après la déclaration du design. Si on ne le fait pas, on considère le design sur l'objet filtré (avec moins de PSU / strates qu'il y en a en réalité), ce qui sous-estime potentiellement la distribution d'échantillonnage. Voir :
*=\> De ce fait, j'ai inclus une option de filtre (filter_exp) dans les fonctions (qui filtre après la déclaration du design), qui évite de filtrer l'objet avant en dégradant le design. =\> Vérifier que c'est bien OK !*
### Fonctions à créer
#### Bivarié ou 3 variables+
- Superposition de 2 statistiques (bar + lines) avec échelles différentes.
- Tableau croisé avec résidus ou couleur par proportion (proportions par c, l, ou total)
:::