Los argumentos de una función en R
Los argumentos son lo que le pasas a una función para que trabaje. En R hay varias formas de dárselos, y entenderlas te evita errores raros.
Por posición o por nombre
Estas dos llamadas hacen lo mismo:
round(3.14159, 2)
round(x = 3.14159, digits = 2)
La primera va por posición: R asume que el primer valor es x y el segundo digits. La segunda va por nombre, y es más segura → no dependes del orden.
De hecho, nombrándolos puedes desordenarlos:
round(digits = 2, x = 3.14159)
La costumbre razonable: el primer argumento por posición (casi siempre son los datos) y el resto por nombre.
Valores por defecto
Al crear una función puedes darle valores por defecto con =:
calcular_precio <- function(base, iva = 0.21) {
base * (1 + iva)
}
calcular_precio(100)
calcular_precio(100, iva = 0.10)
Si no dices nada, usa el 21 %. Si necesitas otro, lo indicas. Así la función es cómoda para el caso normal y flexible para las excepciones.
Un orden que conviene respetar: primero los argumentos obligatorios, después los que tienen valor por defecto.
Ejemplo algo más completo: los tres puntos
El argumento ... recoge "todo lo demás" y se lo pasa a otra función. Es lo que usan muchas funciones de R por dentro.
mi_grafico <- function(x, y, ...) {
plot(x, y, pch = 19, ...)
}
mi_grafico(1:10, (1:10)^2,
col = "steelblue",
main = "Mi gráfico")
col y main no están declarados en mi_grafico(), pero llegan a plot() a través de los tres puntos. Así defines tus valores fijos —aquí, pch = 19— sin renunciar a todo lo que plot() sabe hacer.
Una última cosa: R evalúa los argumentos solo cuando los usa. Esto no da error, aunque parezca que debería:
prueba <- function(a, b) {
a * 2
}
prueba(5)
Nunca se usa b, así que a R le da igual que no se lo hayas pasado. Es cómodo, pero también hace que algunos fallos aparezcan tarde.