Création du package

Développer des packages R

Jasmin Ludolf

Content Developer

Convertisseur d'unités de temps

time_converter <- function(time, unit_from, unit_to) {
  # Define conversion factors for different time units
  conversion_factors <- c(hour = 3600, minute = 60, second = 1)

  # Convert time to seconds
  in_seconds <- time * conversion_factors[unit_from]

  # Convert time from seconds to the desired unit
  return(unname(in_seconds / conversion_factors[unit_to]))
}
Développer des packages R

Utiliser time_converter() et l'ajouter au répertoire du package

time_converter(24, "hours", "seconds")
86400
dump("time_converter", file = "R/time_converter.R")
Développer des packages R

Charger tous les fichiers du package

library(devtools)
load_all()
- Loading unitConverter
  • Charge les fichiers du package dans la session R en cours
  • Permet de tester, déboguer et vérifier la justesse du code avant l'installation
Développer des packages R

Petite coquille

time_converter <-
function(time, unit_from, unit_to) {
  if ( (unit_from == "hours" && unit_to == "minutes") ||
       (unit_from == "minutes" && unit_to == "seconds") ) {
    return(time * 60)
  } else if ( (unit_from == "minutes" && unit_to == "hours") ||
              (unit_from == "seconds" && unit_to == "minutes") ) {
    return(time / 60)
  } else if (unit_from == "hours" && unit_to == "seconds") {
    return(time * 3600)
  } else if (unit_from == "seconds" && unit_to == "hours") {
    return(time / 3600)
  } else {
    return(time)  # No conversion needed

}
Développer des packages R

Détecter les erreurs avec load_all()

load_all()
- Loading unitConverter
Error in `load_all()`:
! Failed to load R/time_converter.R
Caused by error in `parse()`:
! ~/unitConverter/R/time_converter.R:17:0: unexpected end of input
15: 
16: }
   ^
Run `rlang::last_trace()` to see where the error occurred.
Développer des packages R

Différences entre load_all() et install()

load_all()

  • Utilisé pendant le développement
  • Charge le contenu du package dans la session R en cours
  • Tester la fonctionnalité avant l'installation

install()

  • À utiliser pendant le développement après load_all()
  • Installer un package
  • Mettre à jour un package installé
Développer des packages R

Vérifier les exigences du package par programme

check()
  • Vérifications de syntaxe
  • Dépendances du package
  • Qualité de la documentation
  • Normes de code
  • Et plus encore
Développer des packages R

Exemples de sortie de check()

Exemple de dernière ligne de sortie de check()

0 errors  | 2 warnings X | 1 note X

État idéal

0 errors  | 0 warnings | 0 notes
  • Errors : problèmes majeurs à corriger avant d'accepter le package
  • Warnings : mettent en évidence des risques ou des écarts aux bonnes pratiques
  • Notes : pistes d'amélioration, par exemple plus de documentation
Développer des packages R

Passons à la pratique !

Développer des packages R

Preparing Video For Download...