Le langage R offre les mêmes fonctionnalités qu’une
calculatrice.
Vous pouvez utiliser tous les opérateurs arithmétiques.
Nom | Opérateur | Exemple | Résultat |
---|---|---|---|
Addition | + | 5 + 3 | 8 |
Soustraction | - | 5 - 1 | 4 |
Multiplication | * | 5*5 | 25 |
Division | / | 5/5 | 1 |
Puissance | ^ | 5^5 | 3125 |
Modulo | %% | 5 %% 5 | 0 |
Quotient Décimal | %/% | 5 %/% 5 | 1 |
## [1] 8
## [1] 87.5
## [1] 149.8967
R permet également l’utilisation d’opérateurs relationnels
Conditions | Opérateur | Exemple | Résultat |
---|---|---|---|
plus petit que | < | 5 < 5 | FALSE |
plus grand que | > | 5 > 5 | FALSE |
plus petit ou égal à | <= | 5 <= 5 | TRUE |
plus grand ou égal à | >= | 5 >= 5 | TRUE |
égal à | == | 5 == 5 | TRUE |
différent de | != | 5 != 5 | FALSE |
présent dans | %in% | 5 %in% 1:5 | TRUE |
## [1] TRUE
## [1] FALSE
## [1] FALSE TRUE TRUE FALSE
Et d’opérateurs logiques :
Condition | Opérateur |
---|---|
différent de | ! |
et | & |
ou | I |
ou exclusif | xor() |
valeur manquante | is.na() |
valeur nulle | is.null() |
vrai | isTRUE() |
faux | isFALSE() |
## [1] TRUE
## [1] TRUE
## [1] TRUE
Des milliers de fonctions pour manipuler et analyser vos données
## [1] 12
## [1] 14
Des fonctions pour représenter vos données
Tout ce que l’on crée dans R sont des objets…
Mais il ne s’agit pas (comme Python) d’un langage de POO!
La Programmation Orientée Objet est un paradigme de programmation basé sur le concept d’objets, qui peuvent contenir des données et métadonnées (attributs), et qui sont associés à des procédures, souvent appelées méthodes.
Il est néanmoins possible de faire de la POO avec R…
Pour créer un objet, donnez lui un nom et assignez-lui un contenu avec le symbole :
<-
## [1] 30
## [1] 30
Assignez différents types de données :
Type | définition | Exemple |
---|---|---|
numeric | nombre | 3 ou 4.23 |
integer | nombre entier | 3 |
double | nombre double | 4.23 |
logical | logique ou booléen | TRUE ou FALSE |
string | chaîne de caractères | “Hello” |
factor | string (modalités prédéfinies) | “Hight” |
date | date formatée | 2020-12-14 |
NA | absence de valeur (tout type) | NA |
obj <- NA
obj <- 3.14
obj <- FALSE
obj <- "Bla bla..."
obj <- factor("A", levels = c("A", "B", "C"))
obj <- as.Date("2020-10-08")
# Type de données ?
class(obj)
## [1] "Date"
## [1] "2020-10-08"
Une fonction est un objet
Une fonction contient une série de commandes (code) qui effectuent une tâche prédéfinie. Elle prend des informations (arguments) en entrée et renvoie un résultat
elle <- "Julie"
lui <- "Thomas"
# paste() pour concaténer des chaînes de caractères
elle_lui <- paste(elle, lui, sep = " aime ")
elle_lui
## [1] "Julie aime Thomas"
# gsub() pour remplacer un 'pattern' de caractère
gsub(pattern = "Thomas", replacement = "Tristan", x = elle_lui)
## [1] "Julie aime Tristan"
Les fonctions peuvent être :
Elles s’utilisent toujours de la même façon : nom()
# Construction d'une fonction, qui écrit "Hello" dans la console
fonction_hello <- function() { print("Hello") }
# Utilisation de la fonction
fonction_hello()
## [1] "Hello"
Le plus souvent, des arguments doivent être renseignés pour utiliser une fonction. Il suffit de leur attribuer une valeur.
De nombreux objets R adaptés aux différents types de données :
Le vecteur est l’objet de base de R. Il permet de stocker un ou plusieurs éléments du même type.
La fonction c() permet de construire un vecteur de plusieurs éléments,
## [1] "Martina" "Leo" "Inès" "Joshua"
Pour naviguer dans cet objet unidimensionnel, utilisez les crochets.
## [1] "Leo" "Joshua"
## [1] "Martina" "Inès"
Le data.frame correspond au tableau de données classique. il se compose de plusieurs colonnes pouvant contenir des données de nature différente. Chaque colonne d’un data.frame est un vecteur.
# Construction de plusieurs vecteurs de même longueur
nom <- c("Modibo Keïta", "Moussa Traoré", "Alpha Oumar Konaré")
date_naissance <- c("1915-06-04", "1936-09-25", "1946-02-02")
annee_arrivee_pouvoir <- c(1960, 1968, 1992)
duree_au_pouvoir <- c(8, 23, NA)
parcours_militaire <- c(FALSE, TRUE, FALSE)
Utilisez la fonction data.frame() pour construire un tableau
Utilisez la fonction data.frame() pour construire un tableau
MyTab <- data.frame(nom,
date_naissance,
annee_arrivee_pouvoir,
duree_au_pouvoir,
parcours_militaire )
MyTab
## nom date_naissance annee_arrivee_pouvoir duree_au_pouvoir
## 1 Modibo Keïta 1915-06-04 1960 8
## 2 Moussa Traoré 1936-09-25 1968 23
## 3 Alpha Oumar Konaré 1946-02-02 1992 NA
## parcours_militaire
## 1 FALSE
## 2 TRUE
## 3 FALSE
Utilisez les crochets pour naviguer dans un tableau :
MyTab[
ligne , colonne ]
## SELECTION PAR INDEX
# Première ligne et toutes les colonnes
MyTab[ 1 , ]
# Toutes les lignes et colonnes 1, 3 et 5
MyTab[ , c(1,3,5)]
# 2e ligne et colonnes 1 et 5
MyTab[2, c(1,5)]
## SELECTION PAR NOM
# 2e ligne et colonnes 1 et 5
MyTab[ 2 , c("nom", "parcours_militaire")]
## nom parcours_militaire
## 2 Moussa Traoré TRUE
Vous pouvez également utiliser le signe $ pour séléctionner une colonne
:
MyTab$date_naissance
## Uilisation du $
# Séléction colonne 'date_naissance'
MyTab$date_naissance
# Valeur de la seconde ligne dans la colonne 'date_naissance'
MyTab$date_naissance[2]
# Colonne 'parcours_militaire', ligne 1 et 3
MyTab$date_naissance[c(1,3)]
## [1] "1915-06-04" "1946-02-02"
Utilisez les différents opérateurs pour sélectionner par condition :
# Séléction par condition
MyTab[ MyTab$duree_au_pouvoir > 20 , ]
# Condition ET Condition
MyTab[MyTab$annee_arrivee_pouvoir > 1965 & MyTab$parcours_militaire == FALSE, ]
# Condition OU Condition
MyTab[MyTab$duree_au_pouvoir >= 10 | is.na(MyTab$duree_au_pouvoir), ]
# Utilisation de fonction
MyTab[nchar(MyTab$nom) > 15, ]
## nom date_naissance annee_arrivee_pouvoir duree_au_pouvoir
## 3 Alpha Oumar Konaré 1946-02-02 1992 NA
## parcours_militaire
## 3 FALSE
Une liste permet de stocker plusieurs objets (peu importe le type) en un seul. Une liste est une collection d’objet.
Utilisez la fonction list() pour construire une liste
# Vecteur de chaînes de caractères
noms <- c("Martina", "Leo", "Inès", "Joshua")
# Vecteur de numeric
ages <- c(21, 20, 25, 18)
# data.frame
tablo <- data.frame(noms, ages)
# fonction
fonction_hello <- function() { print("Hello") }
# Construction d'un objet list
Ma_list <- list(noms, ages, tablo, fonction_hello)
C’est un super objet très utile et puissant.
Cet
objet est utilisé par plusieurs packages de référence
Pour naviguer dans une liste, utilisez des doubles
crochets :
Ma_list[[ index ]]
## [1] "Martina" "Leo" "Inès" "Joshua"
# Séléction au sein d'un objet d'une list :
# 2e ligne et 1ère colonne de mon objet 3
Ma_list[[3]][4 , 2]
## [1] 18
Le langage R offre 2321 fonctions de base* stockées dans 7 packages standards, installés et chargés automatiquement :
633 fonctions supplémentaires* sont également mises à disposition par l’intermédiaire de 5 autres packages pré-installés (grid, splines, stats4, tcltk, tools), mais qui ne sont pas chargés automatiquement.
* Calculé le 2023-01-16
Les fonctionnalités standards (ou primitives) proposées par R permettent de réaliser beaucoup de choses
Il est cependant parfois nécessaire d’installer des
packages
pour profiter de certaines
fonctionnalités :
19051* packages sont disponibles sur le Comprehensive R Archive Network
L’installation d’un package peut se faire en clic-bouton avec Rstudio. Cette opération n’est à réaliser qu’une fois, sauf si vous souhaitez mettre à jour le package.
# Utilisez install.packages() pour installer un package en ligne de code
# Exemple avec le package "mapsf"
install.packages("mapsf")
Pour utiliser les fonctions du package, chargez la librairie :
Il est nécessaire de charger la librairie à chaque nouvelle session R
* Calculé le 2023-01-16
Le Comprehensive R Archive Network est le système officiel de stockage et de mise à disposition des packages R. Il existe d’autres sources :
De nombreux packages fonctionnels et très intéressants sont uniquement disponibles sur GitHub… Attention, ils ne bénéficient pas du système de contrôle offert par le CRAN !
GitHub permet aux développeurs de programmer de manière collaborative. Beaucoup de développeurs y partagent leur package, et profitent ainsi de contributions externes
Un package peut connaître une longue période de développement. Cela ne l’empêche pas d’être opérationnel. C’est par exemple le cas du package apinsee destiné à faciliter l’authentification aux API de l’INSEE. Pour l’installer depuis GitHub :
# Le package remotes permet d'installer un package stocké sur GitHub
install.packages("remotes")
# Chargez la librairie
library(remotes)
# Utilisez la fonction install_github() en indiquant le nom du dépôt
install_github("inseefrlab/apinsee")
# Chargez la librairie
library(apinsee)
Sur Windows, il est nécessaire d’installer Rtools pour utiliser les packages qui interagissent avec le système d’exploitation (remotes, devtools…)
PACKAGES POPULAIRES
Une opération peut être réalisée de plein de façons différentes, en utilisant des fonctions primitives ou provenant de packages.
Chacun ses préférences. Mais il est peut être utile de connaître les utilisations les plus courantes
Petit tour d’horizon…
Fichiers texte
Tableaux (csv, tsf, fwf, log…)
Fichiers Excel
Données SPSS, Stata et SAS
web scraping (Rstudio)
Créer interface API
web scraping (Selenium)
Interfaces d’API et BD
eurostat - rOpenGov package - Interface API Eurostat
insee - Données et métadonnées INSEE (BDM)
wbstats et WDI - Interface API et données Banque mondiale
wpp2017 - Données UN (World Population Prospects 2017)
rnaturalearthdata - rOpenSci package - Données Natural Earth
osmdata - rOpenSci package - Interface API OpenStreetMap
rtweet - rOpenSci package - Interface API Twitter
spotifyr - Interface API Spotify
googleAuthR, googleAnalyticsR, searchConsoleR… - API’s Google
…
Manipulation de données
Manipulation de données
Manipulation de données
Manipulation de tableaux
Manipulation de dates
Chaînes de caractères
Collection de packages conçues pour fonctionner ensemble et basés sur
une philosophie commune.
Ils abordent un très grand nombre
d’opérations courantes dans R, comme l’import/export, web scraping,
manipulation de données, visualisation, programmation…
Elles sont en grande partie issues du travail d’Hadley Wickham, développeur emblématique qui travaille désormais pour RStudio.
Statistique univariée, bivariée,
test de probabilité…
Suite de packages pour faciliter
l’utilisation de techniques
statistiques avancées
Analyse exploratoire multidimensionnelle
cf. FactoInvestigate, factoextra, Factoshiny…
Analyse exploratoire multidimensionnelle
avec procédures
exploratoires d’essence euclidienne
Fonctions issues du livre
Modern Applied
Statistics with S
Analyse exploratoire multidimensionnelle
Décomposition de la valeur
singulière
Statistique basique,
tableaux croisés…
Construction de plan
d’échantillonnage complexe
Contient un addin
(interface graphique)
Manipulation et analyse de corpus
Issue de l’ERC QUANTESS.
Text mining
Statistique textuelle
Text mining et NLP
Bonne gestion de la mémoire
Package avec interface graphique :
R.temis - Manipulation et analyse de corpus
RcmdrPlugin.temis - Interface graphique pour R.temis
IRaMuTeQ - Interface de R pour les Analyses Multidimensionnelles de Textes et de Questionnaires
…
Analyse de réseau
Disponible en c/c++, python et Mathematica
Analyse pondérée, bimodale
et longitudinale des réseaux
Analyse de réseau biparti
cf. FactoInvestigate,
factoextra, Factoshiny…
Modélisation de réseau valué
Simulation de modèles stochastiques
Import, manipulation et analyse
de données
vectorielles
Import et manipulation
de données
raster
Import, manipulation et analyse
de données
raster
Analyse de données raster
(En
développement)
Représentation graphique standard
nuage de point, histogramme,
Boxplot…
Représentation graphique avancée
basée sur la grammaire
graphique
Représentation graphique dynamique
Adaptation librairie JavaScript D3
Graphiques interactifs
Adaptation librairie JavaScript
Cartographie thématique
Cartographie thématique
Carte interactive
basée sur API Leaflet
Literate programming
Documents balisés en markdown
Compiler les documents
markdown -> pandoc
Créer PDFs avec CSS (comme LaTeX)
Livre, thèse, article, poster…
Facilite la rédaction de livre
Création de diaporama
Construction de site
Application interactive
Modèles de mise en page :
rmdformats - Templates documents HTML
learnr - Tutoriel interactif
Reveal.js - Diaporama
flexdashboard - Tableau de bord
…
L’Environnement de Développement Intégré mis à disposition par Rstudio a sans aucun doute participé à la croissance du nombre d’utilisateur.rice.s de R.
Cette interface offre une aisance de développement autant appréciée par les débutants que par les développeurs expérimentés.
De nombreuses fonctions sont disponibles en bouton dans l’IDE Rstudio
Installation de packages
Export de graphique
Import/export de données
Interface personnalisable
Visualisation des objets
Explorateur de fichiers
RStudio propose d’organiser son travail en projet. L’idée principale est de rassembler tous les fichiers d’un même projet dans un répertoire dédié.
A l’ouverture d’un projet :
C’est l’un des points forts du langage
Inclusion et partage sont au coeur de la communauté R
Les réponses à vos questions existent forcément
Mais où et comment chercher ?
La fonctionnalité d’auto-complétion proposée par Rstudio peut dans un premier temps être très efficace. Utilisez la touche tab.
Les packages (base et CRAN) sont accompagnés d’une documentation.
Vous pouvez y accéder en ligne de commande ou en clic-bouton :
# Chargement de la librairie
library(mapsf)
# help() ou ?
help(mapsf)
?mapsf
# Sur un package ou sur une fonction
help(mf_map)
?mf_map
D’autres fonctions de recherche et
d’accès à la documentation sur
r-project.org
Certains packages proposent de la documentation plus digeste, comme une vignette, une cheatsheet, voire même un site web
Site web du package sf
Vignette du package MTA
La vignette est un document qui décrit en profondeur le concept et le fonctionnement d’un package. Il y a parfois plusieurs chapitres…
La Cheatsheet (antisèche) est un format crée par Rstudio. Il s’agit d’un document qui résume brièvement (une ou deux feuilles) les fonctionnalités d’un package.
Retrouvez la majorité des cheatsheets sur Rstudio
De nombreuses librairies de référence possèdent leur site web
La communauté R est très active et s’avère prolifique en matière de partage et de documentation :
Conférences, groupes d’utilisateur.rice.s, manuels, blogs, forums, agrégateurs, MOODLE, MOOC, vidéos, listes de diffusion, réseaux sociaux… ex :
Il y en a pour tous le monde !
Il existe des centaines de manuels dans différentes
langues.
Certains sont focalisés sur une discipline ou une
fonctionnalité.
Quelques manuels généralistes :
Quelques manuels thématiques :
Plusieurs sites internet collaboratifs permettent
l’agrégation de contenu ou l’inventaire de
ressources.
Agrégateurs de contenu
Inventaires de ressources :
Certains blogs, parfois très complets, sont de véritables mines d’or !
Vous avez une question ?
Forums
Listes de diffusion
La communauté R est très active sur les réseaux sociaux
R version 4.2.2 Patched (2022-11-10 r83330)
Consultation :
https://huguespecout.github.io/Intro_R_Rstudio_FR/
Code source :
https://github.com/HuguesPecout/Intro_R_Rstudio_FR/
Violaine Jurie (Université de Paris)
Ronan Ysebaert (Université de Paris)
REVEAL.JS