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.