R transmet les arguments par valeur
Le titre le dit déjà : R transmet les arguments par valeur. Qu'est-ce que cela signifie? En bref, une fonction R ne peut pas modifier la variable que vous lui passez en entrée. Voyons un exemple simple (essayez-le dans la console) :
triple <- function(x) {
x <- 3*x
x
}
a <- 5
triple(a)
a
À l'intérieur de la fonction triple(), l'argument x est écrasé par sa valeur multipliée par trois. Ensuite, ce nouveau x est retourné. Si vous appelez cette fonction avec une variable a égale à 5, vous obtenez 15. Mais la valeur de a a-t-elle changé? Si R passait a à triple() par référence, la réaffectation de x à l'intérieur de la fonction se répercuterait sur la variable a, à l'extérieur de la fonction. Cependant, R passe par valeur, donc les objets R que vous transmettez à une fonction ne peuvent jamais changer à moins que vous ne fassiez une affectation explicite. a reste égal à 5, même après l'appel à triple(a).
Pouvez-vous dire laquelle des affirmations suivantes est fausse au sujet du code ci-dessous?
increment <- function(x, inc = 1) {
x <- x + inc
x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)
Cette activité fait partie du cours
R intermédiaire
Exercice interactif pratique
Passez de la théorie à l’action grâce à l’un de nos exercices interactifs
Commencer l’exercice