8.3 Nuestra primera función

Partimos del algoritmo para calcular el área de un cuadrilátero: lado x lado.

Podemos convertir esto a operaciones de R y asignarlas a una función llamada area_cuad de la siguiente manera:

area_cuad <- function(lado1, lado2) {
  lado1 * lado2
}

Las partes de nuestra función son:

  • Nombre: area_cuad.
  • Argumentos: lado1, lado2. Estos son los datos que necesita la función para calcular el área, representan el largo de los lados de un cuadrilátero.
  • Cuerpo: La operación lado1 * lado2, escrita de manera que R pueda interpretarla.

Ejecutaremos nuestra función para comprobar que funciona. Nota que lo único que hacemos cada que la llamamos es cambiar la medida de los lados del cuadrilátero para el que calcularemos un área, en lugar de escribir la operación lado1 * lado2 en cada ocasión.

area_cuad(lado1 = 4, lado2 = 6)
## [1] 24
area_cuad(lado1 = 36, lado2 = 36)
## [1] 1296

En cada llamada a nuestra función estamos asignando valores distintos a los argumentos usando el signo de igual. Si no asignamos valores a un argumento, se nos mostrará un error

area_cuad(lado1 = 14)
## Error in area_cuad(lado1 = 14): argument "lado2" is missing, with no default

En R, podemos especificar los argumentos por posición. El orden de los argumentos se determina cuando creamos una función.

En este caso, nosotros determinamos que el primer argumento que recibe area_cuad es lado1 y el segundo es lado2. Así, podemos escribir lo siguiente y obtener el resultado esperado.

area_cuad(128, 64)
## [1] 8192

Esto es equivalente a escribir lado1 = 128, lado2 = 64 como argumentos.

Podemos crear ahora una función ligeramente más compleja para calcular el volumen de un prisma rectangular

Siguiendo la misma lógica de transformar un algoritmo a código de R, podemos crear una función con el algoritmo: arista x arista x arista.

Definimos la función area_prisma().

area_prisma <- function(arista1, arista2, arista3) {
  arista1 * arista2 * arista3
}

Probemos nuestra función.

area_prisma(arista1 = 3, arista2 = 6, arista3 = 9)
## [1] 162

También podríamos escribir esta función aprovechando nuestra función area_cuad.

area_prisma <- function(arista1, arista2, arista3) {
  area_cuad(arista1, arista2) * arista3
}

# Probemos la función
area_prisma(3, 6, 9)
## [1] 162

Con esto estamos listos para definir una función para crear histogramas con las características que nos pidió nuestro jefe hipotético.