# Bien
do_something_very_complicated(
something = "that",
requires = many,
arguments = "some of which may be long"
)
# Pas bien
do_something_very_complicated("that", requires, many, arguments,
"some of which may be long")Rédiger un script R
Longueur des lignes
La longueur maximale recommandée d’une ligne est 80 caractères. Il faut penser à retourner à la ligne pour que le code soit lisible. Par exemple,
Indentation
Contrairement à Python, R ne provoque pas d’erreur en cas de mauvaise indentation ou d’absence d’indentation. Néanmoins, un code bien indenté est plus facile à lire et à faire évoluer.
Par défaut, dans Tools > Global Options > code, la case Insert spaces for tab est cochée (vous pouvez vérifier). Cela signifie que l’on peut utiliser la touche tab, mais qu’elle sera remplacée par des espaces. Lorsque l’on navigue dans le code, ces espaces se comportent comme des tabulations.
Le raccourci Ctrl+I permet de réindenter les lignes de code sélectionnées. Ce raccourci est très utile lorsqu’on vient de réorganiser une partie de code.
Espacement
-
Les opérateurs binaires qui lient des objets entre eux (:
=,+,-,<-, etc.) sont entourés d’espaces avant et après pour plus de lisibilité. Exemple : on écrit1 + 1 = 2et non1+1=2; -
En revanche, les opérateurs qui modifient un objet ou sélectionnent une partie d’un objet (
:,::et:::,!!,$,@,[et]pour les listes[[et]]pour les listes) ne sont pas entourés d’espace. Exemples : on écritpackage::function()et nonpackage :: function(); on écritdataframe$colonneet nondataframe $ colonne; - Placer un espace après les virgules, pas avant (comme en français, en fait) ;
# Good
x[, 1]
# Bad
x[,1]
x[ ,1]
x[ , 1]- Ne pas mettre d’espace avant ou après les parenthèses ;
-
Les opérateurs de comparaison doivent être entourés d’espace pour ne pas être mal interprétés par
R.
# Il y a une espace entre < et -
# R comprend qu'il s'agit d'une comparaison
3 < -5[1] FALSE
# Il n'y a pas d'espace entre < et -
# R croit qu'il s'agit d'une assignation => erreur
3 <-5Error in `3 <- 5`:
! invalid (do_set) left-hand side to assignment
Accolades
La ligne contenant une commande if doit posséder une accolade ouvrante « { ». La commande else doit toujours être entourée d’une accolade fermante et d’une accolade ouvrante. Cela permet de ne pas générer de bug lors d’une exécution ligne à ligne.
Affectation
Dans beaucoup de contextes, les opérateurs d’assignation <- et = produisent le même résultat. Néanmoins, il est recommandé d’utiliser <- qui est plus cohérent et moins ambigu en R. L’opérateur = est réservé pour les expressions booléennes, les définitions d’arguments à l’intérieur d’une fonction, etc.
Usage des pipes
Il est recommandé d’aller à la ligne systématiquement après chaque pipe (%>%) pour plus de lisibilité. Dans l’exemple suivant, on calcule la moyenne de la variable mpg par nombre de cylindres (cyl) de la table mtcars.