Les nombres et les vecteurs
Informatique — R, chapitre 1
Chaque encadré ci-dessous est une console. Modifiez le code, cliquez sur Exécuter, lisez le résultat. Le tout premier lancement demande une quinzaine de secondes, le temps que R arrive dans votre navigateur.
1.1 Ranger une valeur dans une variable
1.1.1 Le principe
Deux choses à remarquer.
L’affectation s’écrit <-, une flèche vers la gauche : range 5 dans x. Le signe = fonctionne aussi, mais la flèche reste la convention, et elle a le mérite d’indiquer le sens.
R affiche sans qu’on le lui demande. Taper le nom d’une variable suffit à en voir le contenu — pas besoin d’un print.
[1] ?
R répond [1] 5. Ce [1] n’est pas une valeur : c’est le numéro du premier élément affiché sur la ligne. R considère que toute valeur est une suite, et 5 n’est qu’une suite d’un seul élément.
Cette idée gouverne tout le langage. Nous y revenons en 1.4.
1.1.2 Les règles à respecter
Un nom contient des lettres sans accent, des chiffres, le point et le tiret bas. Il ne peut pas commencer par un chiffre.
Écrivez x2. Et sachez que le point est autorisé dans un nom : taux.moyen est valide en R, ce qui surprend quand on vient d’un autre langage.
1.1.3 Majuscules et minuscules
Error: object 'X' not found. Seul x existe.
1.2 Les quatre opérations
Le symbole # ouvre un commentaire, ignoré par R.
1.2.1 Division entière et reste
Les opérateurs encadrés de % sont une particularité de R. On en rencontrera d’autres.
7 / 0
0 / 0R répond Inf, puis NaN — Not a Number. Aucune erreur, aucun arrêt : le calcul continue avec ces valeurs, qui contaminent tout ce qui suit.
Essayez, puis calculez Inf - Inf. Vous obtiendrez encore NaN.
1.3 Puissances et fonctions
Tout est disponible d’emblée : contrairement à Python, R n’exige aucun import pour les mathématiques usuelles.
log est le logarithme naturel
Comme dans presque tous les langages, log(x) désigne le logarithme de base e, pas celui de base 10. Pour le logarithme décimal, log10(x).
L’erreur est fréquente et silencieuse : les deux fonctions renvoient un nombre parfaitement plausible.
1.4 Le vecteur, cœur du langage
C’est ici que R se distingue.
1.4.1 Créer un vecteur
La fonction c — pour combine — assemble plusieurs valeurs en une seule.
1.4.2 L’opération s’applique à tout
Une seule commande traite les six valeurs. C’est la vectorisation, et c’est le réflexe à acquérir en premier : si vous vous apprêtez à écrire une boucle en R, demandez-vous d’abord si l’opération ne s’applique pas directement au vecteur entier.
1.4.3 Créer des suites régulières
1.4.4 Combien de valeurs ?
1.5 Extraire des valeurs
1.5.1 Par position
R numérote à partir de 1 : v[1] est bien la première valeur. C’est la même convention qu’en MATLAB, l’inverse de Python.
Mais v[0] ne provoque aucune erreur : R renvoie un vecteur vide, silencieusement. Une erreur franche vaudrait mieux qu’un silence — essayez, pour vous en souvenir.
1.5.2 Par condition
La condition v > 15 produit une suite de TRUE et FALSE. Les crochets ne retiennent que les positions vraies. Et sum les compte, puisqu’un TRUE vaut 1.
1.6 Un premier graphique
Aucun réglage préalable, aucune bibliothèque : c’est l’un des grands conforts de R. Remplacez type = "b" par "l" pour une ligne seule, ou "h" pour des bâtons.
1.7 Deux surprises à connaître
1.7.1 Les nombres à virgule sont approchés
La première ligne affiche 0.3, la deuxième répond FALSE. R arrondit l’affichage, mais la valeur exacte diffère légèrement de 0,3.
Ne testez jamais l’égalité de deux nombres à virgule par ==. Utilisez all.equal, qui tolère un écart négligeable. Cela vaut dans tous les langages.
1.7.2 Les valeurs manquantes se propagent
NA — Not Available — désigne une donnée absente. La moindre valeur manquante rend le résultat entier indisponible, ce qui est un choix délibéré : R refuse de calculer une moyenne en cachant qu’il manque des données. L’argument na.rm = TRUE lève l’objection en connaissance de cause.
À vous
Créez un vecteur u contenant 3, 7, 11, 15 et 19. Affichez sa longueur, sa somme, sa moyenne, ses éléments supérieurs à 10, et le vecteur multiplié par 3.
length(u) # 5
sum(u) # 55
mean(u) # 11
u[u > 10] # 11 15 19
u * 3 # 9 21 33 45 57Aucune boucle nulle part. C’est tout l’esprit de R.
Ce qu’il faut retenir
| Écriture | Effet |
|---|---|
x <- 5 |
ranger 5 dans x |
# |
commentaire, ignoré |
+ - * / |
les quatre opérations |
%/% et %% |
division entière et reste |
^ |
puissance |
sqrt, exp, log, log10 |
disponibles sans rien charger |
c(...) |
assembler un vecteur |
1:10, seq, rep |
fabriquer une suite |
length, sum, mean |
mesurer, additionner, moyenner |
v[3], v[-1], v[v > 15] |
extraire par position ou par condition |
plot |
tracer, sans configuration |
NA, na.rm = TRUE |
valeur manquante, et comment l’ignorer |
Le chapitre suivant présente les autres types de R : le texte, les valeurs logiques, et les facteurs — ces variables qualitatives qui n’existent nulle part ailleurs.