Restart 2: Opérateurs et fonctions

Lise Vaudor

01/02/2021

Opérateurs arithmétiques

Ils permettent d’effectuer des opérations arithmétiques simples, comme des additions, des multiplications,etc.

v1
[1]  2.3  3.6  1.1  2.4  2.5 10.2
v1+4 # addition
[1]  6.3  7.6  5.1  6.4  6.5 14.2
v1-3 # soustraction
[1] -0.7  0.6 -1.9 -0.6 -0.5  7.2
v1*5 # multiplication
[1] 11.5 18.0  5.5 12.0 12.5 51.0
v1/4 # division
[1] 0.575 0.900 0.275 0.600 0.625 2.550
v1^2 # puissance
[1]   5.29  12.96   1.21   5.76   6.25 104.04

Opérateurs de comparaison

Ils permettent de comparer des vecteurs entre eux.

v1
[1]  2.3  3.6  1.1  2.4  2.5 10.2
v1==3.6 # égal à
[1] FALSE  TRUE FALSE FALSE FALSE FALSE
v1!=2   # différent de
[1] TRUE TRUE TRUE TRUE TRUE TRUE
v1
[1]  2.3  3.6  1.1  2.4  2.5 10.2
v1<4  # plus petit
[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
v1>10 # plus grand
[1] FALSE FALSE FALSE FALSE FALSE  TRUE
v1<=5 # plus petit ou égal
[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
v1>=3 # plus grand ou égal
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE

Opérateurs logiques

Ils permettent de vérifier si une proposition est vraie ou non.

v1
[1]  2.3  3.6  1.1  2.4  2.5 10.2
!(v1>10)    # NON logique
[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
v1<2 & v1>5 # ET logique
[1] FALSE FALSE FALSE FALSE FALSE FALSE
v1<3 | v1>5 # OU logique
[1]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE

Notez également l’existence de la fonction is.na() qui permet d’évaluer si les éléments d’un vecteur sont vides ou non!

v9 <- c(3.2, NA, 8.9, 42.3, 59.2, NA)
is.na(v9)
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE

Opérateurs: opérations terme-à-terme

Pour réaliser les opérations R recycle les vecteurs autant de fois que nécessaire.

Si v1 est de longueur n et v2 de longueur 1, v2 est recyclé n fois.

Si v1 et v2 sont de même longueur n, l’opération se fait terme à terme.

v1=c(3,1,5,2,4)
v2=c(2,1,3,1,0)
v1+v2
[1] 5 2 8 3 4

Fonctions: exemples statistiques

x=c(2.3,5.5,3.7,10.5,11.5,4,3.6,6.1,2.4,12.9)

On peut décrire le mode d’une variable via sa moyenne ou sa médiane.

mean(x)
[1] 6.25
median(x)
[1] 4.75

La distinction entre moyenne et médiane peut être importante quand la variable a une distribution asymétrique.

On peut décrire la variabilité des données à travers la variance ou l’écart-type:

Dans R, on calcule variance et écart-type à l’aide des fonctions var() et sd()

var(x)
[1] 15.49389
sd(x)
[1] 3.936228

Fonctions: exemples statistiques

Le quantile d’ordre p de \(x=(x_1,x_2,...,x_n)\) correspond à la valeur \(\lambda\) telle que p% des données sont inférieures à p.

\[\begin{eqnarray} pr(X \leq \lambda)=p \end{eqnarray}\]

Les quantiles d’ordre 25%, 50%, et 75% sont aussi appelés premier quartile, deuxième quartile (ou médiane), et troisième quartile.

quantile(x, 0.10)
 10% 
2.39 

Le quantile d’ordre 10% (ou 0.10) de x est 2.39.

Cela signifie que seulement 10% des valeurs de x sont inférieures à 2.39.

Par ailleurs, le minimum et maximum des variables peuvent être affichés comme suit:

min(x)
[1] 2.3
max(x)
[1] 12.9

Fonctions : Arguments

Nous avons d’ores et déjà utilisé un certain nombre de fonctions, comme

  • c(),
  • seq(),
  • rep(),
  • mean(), etc.

Toutes les fonctions que nous avons utilisées jusqu’à présent sont définies sur le package de base de R.

Les fonctions sont des objets qui ont toutes un point commun: elles s’écrivent avec des parenthèses, dans lesquelles l’utilisateur précise la valeur des arguments si besoin est.

Les arguments peuvent être obligatoires (la fonction ne peut pas fonctionner si ces arguments ne sont pas fournis par l’utilisateur) ou au contraire optionnels. Par exemple, dans

quantile(x=x, probs=0.1)
 10% 
2.39 

l’argument x est obligatoire, et l’argument probs est optionnel. On peut ainsi ne passer que l’argument x à la fonction:

quantile(x=x)
    0%    25%    50%    75%   100% 
 2.300  3.625  4.750  9.400 12.900 

Fonctions: Ordre et noms des arguments

Si l’on passe les arguments à la fonction dans le bon ordre, on n’a pas besoin de préciser le nom des arguments. Ainsi, il est possible d’appeler la fonction quantile des deux manières suivantes:

quantile(x=x, probs=0.1)
 10% 
2.39 
quantile(x,0.1)
 10% 
2.39 

En revanche, l’appel suivant produira une erreur:

quantile(0.1,x)
Error in quantile.default(0.1, x): 'probs' outside [0,1]

Pour accéder aux informations quant aux arguments d’une fonction, on peut consulter l’aide associée des deux façons suivantes:

help(quantile)
?quantile

Fonctions: Aide

Le fichier d’aide associé à une fonction est toujours structuré de la même manière. Sans trop détailler, voici les parties qui me semblent les plus importantes…

  • Description qui décrit succintement le but de la fonction
  • Arguments qui détaille les arguments, vous montre l’ordre dans lequel ils sont attendus, et vous précise leur effet ainsi que leurs valeurs par défaut (le cas échéant).
  • une partie Exemples qui permet généralement de tester la fonction pour comprendre rapidement son usage.

Détails et References permettent en outre d’expliquer les détails de la méthode et éventuellement de citer la ou les publications associées à la méthode/fonction ou package.

Packages

Les packages sont des paquets de fonctions visant à réaliser des tâches un peu particulières. L’installation de base de R vous installe, par défaut, un certain nombre de packages (base, methods, stats, graphics, etc.)

Dans la suite de ce cours, nous serons amenés à utiliser le package dplyr qui sert à manipuler des tableaux de données.

Pour être en mesure d’utiliser les fonctions de ce package, il faut:

  • Installer le package: les fonctions du package sont alors téléchargées depuis un serveur distant et enregistrées sur le disque dur de votre ordinateur:
install.packages("dplyr")
  • Charger le package (les fonctions du package sont chargées dans l’environnement R pour la session en cours)
library(dplyr)  

Vous pouvez également installer et charger les packages en passant par RStudio:

On récapitule!

On a parlé de quoi, déjà?
  • opérateurs (arithmétiques, comparaisons, logiques)
  • description d’objets (quelques fonctions de base)
  • usage des fonctions (arguments: nommage, ordre, valeurs par défaut)
  • aide associée aux fonctions
  • packages (installation, chargement)

Qu’est-ce qu’un package ?

Un package est un ensemble de fonctions documentées visant à la réalisation d’une tâche particulière.

En poursuivant cette série de tutoriels vous serez notamment amenés à travailler avec le package dplyr qui vise à réaliser un ensemble d’opérations et de manipulations de base sur les tableaux de données, et le package ggplot2 qui vise à produire des graphiques en s’appuyant sur les principes de la grammaire des graphiques.

Installation vs chargement

INSTALLATION CHARGEMENT
Pour télécharger les codes du package sur l’ordi Pour pouvoir appeler les fonctions en utilisant leur nom
Pour utiliser un package, vous aurez besoin de l’installer sur votre ordinateur. Cette étape nécessite que vous téléchargiez l’ensemble des fichiers contenant le code du package sur votre ordi. De ce fait, c’est une étape qui nécessite que vous ayiez accès à internet… Par contre, vous n’avez besoin de réaliser cette installation une seule fois (tant que vous ne changez pas d’ordi, ou que vous n’avez pas besoin de mettre à jour le package par exemple). A chaque fois (ou presque) que vous utiliserez un package (i.e. pour chacune de vos sessions de travail avec ce package), vous aurez besoin de le charger. Le chargement d’un package permet en effet à R d’ajouter les noms de ses fonctions à son “répertoire” et donc d’aller chercher le code correspondant où il se doit.
install.packages("dplyr")
library(dplyr)

Espace de nommage, désambiguation

Chaque package est associé à un espace de noms (namespace) qui correspond à l’ensemble des noms de fonctions qui le composent.

Un même nom peut correspondre à plusieurs fonctions, issues de packages différents.

Si ces packages sont installés et chargés pour une même session de travail, il est recommandé (voire indispensable) d’écrire explicitement à quel espace de noms on fait référence à l’aide de la notation nomdupackage::nomdelafonction
library(stats)
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
starwars %>% filter(starwars,species=="Human")
Error: Problem with `filter()` input `..1`.
x Input `..1$name` must be a logical vector, not a character.
ℹ Input `..1` is `starwars`.

Vie et maintien d’un package

Un package n’est pas définitivement figé au moment de sa création (ou de son dépôt sur le CRAN par exemple).

Il est amené à évoluer, en lien avec, par exemple, les demandes des utilisateurs, les ajouts ou modifications des contributeurs, les modifications rendues nécessaires par les changements de version des autres packages (dont il dépend) ou de R lui-même.

En effet, un package est construit sur la base de codes R préexistants, mais également en se basant sur des packages, basés sur des packages, basés sur des packages… Ces packages constituent ce qu’on appelle les dépendances.

Qualité d’un package

La “qualité” d’un package peut recouvrir de nombreuses notions, parmi lesquelles:

  • le fait que le code fonctionne, et soit robuste (à de légers changements dans les types de données entrées par exemple).
  • le fait que le code soit bien documenté, de sorte que l’utilisateur comprenne comment utiliser une fonction et à quoi correspond le résultat en sortie.
  • le fait que les traitements réalisés soient corrects (par exemple qu’un algorithme soit juste, qu’un test soit correct d’un point de vue statistique etc.) et corresponde bien au résultat escompté par l’utilisateur.

  • Qualité du code => qualité du matériel, de l’instrumentation
  • Qualité de la méthode => on obtient bien le produit escompté
  • Qualité de la doc => les instructions sont claires!

Des fonctions, de la documentation

Pour obtenir de l’aide sur une fonction (installée, peut-être non chargée):

??nomfonction

Pour obtenir de l’aide sur une fonction (installée et chargée):

?nomfonction
help(nomfonction)

Pour obtenir la liste de la doc relative à un package:

help(package="dplyr")

=> liste des fonctions, des vignettes, etc.

Documentation simplifiée: vignettes

Les vignettes sont des documents qui aident à prendre en main un package en identifiant ses fonctions les plus importantes, et en montrant un ou plusieurs cas d’usage.

Tous les packages ne font pas l’objet de vignettes!…

Pour lister les vignettes relatives à un package (par ex. dplyr):

vignette(package="dplyr")
Vignettes in package ‘dplyr’:

colwise                colwise (source, html)
compatibility          dplyr compatibility (source, html)
base                   From base R to dplyr (source, html)
grouping               Grouped data (source, html)
dplyr                  Introduction to dplyr (source, html)
programming            Programming with dplyr (source, html)
rowwise                rowwise (source, html)
two-table              Two-table verbs (source, html)
window-functions       Window functions (source, html)

Pour visualiser une vignette donnée:

vignette("colwise", package="dplyr") # dans RStudio
RShowDoc("colwise", package="dplyr") # dans le navigateur web

Documentation simplifiée: cheatsheets

Les cheatsheets (ou antisèches) sont des documents visant à résumer de manière graphique la fonction et l’usage d’un package.

Tous les packages ne font pas l’objet d’une cheatsheet. Les plus utiles sont listées ici:

(https://rstudio.com/resources/cheatsheets/)

Des problèmes d’installation?

Le package a bien été installé!

Ce n’est pas parce que vous avez des messages/ des warnings/ du rouge dans votre console que vous avez eu un problème d’installation…

La preuve:

Par contre, là, oui, l’installation n’a pas pu aboutir:

Ici en l’occurrence, j’ai besoin d’installer magick sur ma machine (en dehors de R) avant d’installer le package R magick…

Des problèmes d’installation?

Parmi les problèmes classiques (et faciles à résoudre) qu’on peut rencontrer lors de l’installation, on peut citer:

  • l’absence de connection internet
  • l’absence de guillemets autour du nom de package dans l’appel à la fonction install.packages() (eh oui des fois ça coince pour des bêtises…)
  • une mauvaise orthographe du nom de package

Illustration:

install.packages("dplyr") #j'ai coupé internet
Installing package into '/home/lvaudor/R/x86_64-pc-linux-gnu-library/3.6'
(as 'lib' is unspecified)
also installing the dependencies 'lifecycle', 'rlang'
install.packages(dplyr)
Error in install.packages(dplyr): objet 'dplyr' introuvable
install.packages("deplyr")
Installing package into '/home/lvaudor/R/x86_64-pc-linux-gnu-library/3.6'
(as 'lib' is unspecified)
Warning: package 'deplyr' is not available (for R
version 3.6.3)

Des problèmes d’installation?

Les problèmes d’installation sont relativement souvent liés à un problème dans l’installation des dépendances:

Dans ce cas cela peut être une bonne idée d’installer la dépendance “qui coince” en premier, puis retenter l’installation du package…