R pasa argumentos por valor
El título ya lo dice: R pasa los argumentos por valor. ¿Qué significa esto? Simplemente, significa que una función R no puede cambiar la variable que introduces en esa función. Veamos un ejemplo sencillo (pruébalo en la consola):
triple <- function(x) {
x <- 3*x
x
}
a <- 5
triple(a)
a
Dentro de la función triple(), el argumento x se sobrescribe con su valor multiplicado por tres. Después se devuelve esta nueva x. Si llamas a esta función con una variable a igual a 5, obtienes 15. Pero ¿ha cambiado el valor de a? Si R pasara a a triple() por referencia, la anulación de x dentro de la función se propagaría a la variable a, fuera de la función. Sin embargo, R pasa por valor, por lo que los objetos R que pasas a una función nunca pueden cambiar a menos que hagas una asignación explícita. a sigue siendo igual a 5, incluso después de llamar a triple(a).
¿Puedes decir cuál de las siguientes afirmaciones sobre el siguiente fragmento de código es falsa?
increment <- function(x, inc = 1) {
x <- x + inc
x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)
Este ejercicio forma parte del curso
R intermedio
Ejercicio interactivo práctico
Pon en práctica la teoría con uno de nuestros ejercicios interactivos
Empezar ejercicio