Chapitre 2 Rédiger un script R
2.1 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,
# 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")
2.2 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.
2.3 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 = 2
et 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$colonne
et 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
.
# ESPACE: COMPARAISON COMPRISE
3 < -5
## [1] FALSE
# PAS D'ESPACE: R CROIT A UNE ASSIGNATION
3 <-5
## Error in 3 <- 5: invalid (do_set) left-hand side to assignment
2.4 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.
## [1] "world"
2.5 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 ambigü 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.