Créer des fonctions de package

Développer des packages R

Jasmin Ludolf

Content Developer

Structure d'un package R

Exemple de structure de package

Développer des packages R

Différentes échelles de température

  • Quelle est la valeur de 35 degrés Celsius (C) en Fahrenheit (F) ?

Perdu sur la plage

Développer des packages R

Convertir avec R

 

C_value <- 35
F <- 9/5 * C_value + 32
F
[1] 95
Développer des packages R

Rappel sur les fonctions R

temp_converter <- function(

value, unit_from = "Celsius", unit_to = "Fahrenheit") {
if (unit_from == "Celsius" && unit_to == "Fahrenheit") { return(value * 9/5 + 32)
} else if (unit_from == "Fahrenheit" && unit_to == "Celsius") { return((value - 32) * 5/9)
} else if (unit_from == unit_to) { warning("unit_from and unit_to are the same, value returned.") return(value)
} else { stop("Invalid unit_from or unit_to. Only 'Celsius' and 'Fahrenheit' are accepted.") } }
Développer des packages R

Utiliser temp_converter()

temp_converter(100)
[1] 212
temp_converter(95, unit_from = "Fahrenheit", unit_to = "Celsius")
[1] 35
Développer des packages R

Bonnes pratiques pour les fonctions R

  1. Choisissez des noms explicites
  2. Traitez toutes les entrées avec soin
  3. Une fonction, une tâche
Développer des packages R

Enregistrer une fonction dans un fichier

dump("temp_converter", 
     file = "R/temp_converter.R")

Structure actuelle du package unitConverter

Développer des packages R

Installer le package avec devtools

devtools::install()
-  checking for file 'DESCRIPTION' ...
-  preparing 'unitConverter':
-  checking DESCRIPTION meta-information ...
  --install-tests 
* installing to library
* installing *source* package 'unitConverter' ...
** R
** data
** inst
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
* DONE (unitConverter)
Développer des packages R

Appeler temp_converter() avec temperature_data

value unit
36.26 Celsius
library(unitConverter)

unitConverter:::temp_converter(
value = temperature_data$value[1], unit_from = temperature_data$unit[1], unit_to = "Fahrenheit")
[1] 97.268
Développer des packages R

Passons à la pratique !

Développer des packages R

Preparing Video For Download...