01 75 60 34 00 | conseil@ensae.fr | Prenez RDV |

R expert — Programmation

R expert — Programmation

Objectifs pédagogiques

  • Acquérir des notions avancées de programmation avec R.

Programme détaillé

Rappel des structures des objets et fonctionnement interne 1h

Programmation de base 2h

Programmation objets S3 2h

Comparaison de performances entre structure vectorielle et boucles 1h

Amélioration du code (Rcpp, parallélisation) 3h

Création d’un package avec plusieurs objectifs (gestion de projet, diffusion d’outils…) 3h

Public visé

Toute personne souhaitant développer une utilisation avancée de R : statisticiens, data analysts, data scientists…

Prérequis

Parmi nos formations au langage R, cette formation est le niveau 3. Elle requiert une bonne maîtrise et une utilisation régulière de R (contenu des formations niveau 1 - R initiation et niveau 2 - R intermédiaire).

Approche pédagogique

Moyens pédagogiques
Exposé théorique de concepts Applications pratiques sur ordinateur Échanges sur les pratiques et expériences des participants Temps de questions / réponses Exercices, quiz, etc.
Méthodes pédagogiques
Méthode expositive Méthode active
Satisfaction globale
★★★★★ ★★★★★
4,1/5

Calculés à partir de 20 avis recueillis depuis 04/12/2018, lors de 3 sessions de cette formation.

Contenu
★★★★★ ★★★★★ 3,8/5
Durée et rythme
★★★★★ ★★★★★ 4,6/5
Formateur
★★★★★ ★★★★★ 4,4/5
Supports et ressources
★★★★★ ★★★★★ 4,5/5

Du script au package R : objets S3, performance et diffusion du code

Un utilisateur avancé de R finit par accumuler des fonctions recopiées d’un script à l’autre, avec des variantes qui divergent au fil du temps. Le package est la réponse de R à ce problème. Ce n’est pas réservé aux auteurs d’outils publiés : c’est d’abord une façon d’organiser, de documenter et de tester son propre code.

Pourquoi un package, même en interne

En octobre 2026, le CRAN, le dépôt officiel de R ouvert en 1997, propose plus de 25 000 packages. Tous respectent une même structure : un dossier R/ pour les fonctions, un fichier DESCRIPTION pour les métadonnées et les dépendances, une documentation par fonction. La commande R CMD check vérifie l’ensemble : syntaxe, documentation, exemples, tests. Un package interne profite des mêmes garde-fous : une fonction modifiée est la même pour toute l’équipe, sa documentation est accessible par ?fonction, et ses dépendances sont déclarées au lieu d’être supposées.

S3, l’objet à la manière de R

Le système d’objets le plus utilisé de R, dit S3, remonte au langage S et à l’ouvrage Statistical Models in S de John Chambers et Trevor Hastie (1992). Il est minimaliste : un objet est une liste munie d’un attribut class, et une fonction générique choisit la méthode à appeler selon cette classe. C’est ce mécanisme qui permet à print() ou à summary() d’afficher un résultat adapté selon qu’on leur donne une régression ou un tableau.

resume <- function(x, ...) UseMethod("resume")
resume.default <- function(x, ...) summary(x)
resume.enquete <- function(x, ...) {
  cat("Enquête", x$nom, ":", nrow(x$donnees), "répondants\n")
  invisible(x)
}

e <- structure(list(nom = "Emploi 2026", donnees = reponses), class = "enquete")
resume(e)  # appelle resume.enquete()

Quand R ne va pas assez vite

R est un langage interprété : une boucle for qui traite les éléments un par un est souvent bien plus lente qu’une opération vectorielle équivalente, qui s’appuie sur du code compilé. La première optimisation consiste donc à vectoriser, et à mesurer avant et après (system.time()). Quand une boucle est inévitable, le package Rcpp, maintenu par Dirk Eddelbuettel depuis 2008 et refondu avec Romain François, permet d’écrire la partie critique en C++ et de l’appeler depuis R comme une fonction ordinaire. La parallélisation, enfin, répartit des calculs indépendants sur plusieurs cœurs : le package parallel, livré avec R, en fournit les outils de base.

Pour diffuser une analyse sous forme d’application interactive plutôt que de package, voir la formation R expert — Créer une application R Shiny.