Cómo crear tus propias funciones en R

Una función es un trozo de código al que le pones nombre para poder reutilizarlo. En R se crean con function(), y la regla para saber cuándo hacerlo es sencilla: si has copiado y pegado el mismo código tres veces, toca escribir una función.

Ejemplo simple

saludar <- function(nombre) {
  paste("Hola,", nombre)
}

saludar("Ana")

La estructura es siempre la misma:

  • saludar → el nombre, que asignas con <- como cualquier otra cosa en R.
  • function(nombre) → entre paréntesis, lo que recibe.
  • Entre llaves → lo que hace.

Una función devuelve automáticamente el resultado de su última línea. Por eso este ejemplo funciona sin escribir return().

Ejemplo algo más completo

Imagina que en todos tus análisis calculas lo mismo: media, mediana y desviación típica de una columna. En vez de repetir tres líneas cada vez:

resumen <- function(x) {
  c(media = mean(x, na.rm = TRUE),
    mediana = median(x, na.rm = TRUE),
    desviacion = sd(x, na.rm = TRUE))
}

resumen(iris$Sepal.Length)

Y ahora puedes aplicarla a varias columnas de golpe:

sapply(iris[, 1:4], resumen)

Ahí está el valor real: una función bien pensada se combina con sapply() y te resuelve una tabla entera.

Tres consejos

Que haga una sola cosa. Si tu función calcula, dibuja un gráfico y guarda un archivo, en realidad son tres funciones.

Nombres que digan qué hacen. calcular_iva() se entiende; f2() no. Y usa verbos.

Que no dependa de lo de fuera. Todo lo que la función necesite debería entrar por sus argumentos. Si usa una variable que existe "por ahí" en tu entorno, el día que esa variable cambie de nombre, la función se rompe sin avisar.

# Mal: depende de una variable externa
calcular <- function() {
  precio * 1.21
}

# Bien: recibe lo que necesita
calcular <- function(precio) {
  precio * 1.21
}