R - Conceptos básicos

Definición de funciones

Además de todas las funciones disponibles en la distribución base de R y en sus diferentes paquetes, R permite que los programadores definan sus propias funciones.

Toda función tiene tres partes esenciales:

Para programar una función, debe definirse cada una de esas partes por medio de la palabra función function().

mi_funcion <- function(argumento_1, argumento_2, argumento_n) {
  # Cuerpo de la función
}

Por ejemplo, la siguiente función calcula la nota final de un curso con base en los promedios de exámenes, proyectos y tareas.

nota_final <- function(promedio_examenes,
                       promedio_proyectos,
                       promedio_tareas) {
  factor_examenes <- promedio_examenes * 0.5
  factor_proyectos <- promedio_proyectos * 0.4
  factor_tareas <- promedio_tareas * 0.1
  
  return(factor_examenes + factor_proyectos + factor_tareas)
}

La función return() es la que define el valor de retorno de la función. Si no se incluye, la función retorna la última expresión evaluada.

Ahora que está definida, la función nota_final() puede ser invocada, con diferentes argumentos:

# Si ni se incluyen los nombres de los argumentos, la función asume que se ingresan en el mismo orden en el que fueron definidos
nota_final(100, 50, 0)
[1] 70

# El uso de los nombres de argumentos permite modificar su orden
nota_final(promedio_examenes =  100, promedio_tareas =  0, promedio_proyectos = 50)
[1] 70

Si se desea darle al usuario la opción de omitir algunos argumentos, se les puede asignar un valor por defecto.

Seguidamente, la función nota_final() se redefine asignando valores por defecto a algunos de los argumentos:

nota_final <- function(promedio_examenes,
                       promedio_proyectos = 0,
                       promedio_tareas = 0) {
  factor_examenes <- promedio_examenes * 0.5
  factor_proyectos <- promedio_proyectos * 0.4
  factor_tareas <- promedio_tareas * 0.1
  
  # Al no llamarse a la función return(), se retorna la última expresión:
  factor_examenes + factor_proyectos + factor_tareas
}

# Se utiliza el valor por defecto (0) para el argumento promedio_tareas
nota_final(promedio_examenes = 100, promedio_proyectos = 50)
[1] 70

# Se llama la función usando la posición del primer argumento y el nombre del segundo
nota_final(100, promedio_proyectos = 50)
[1] 70

Ejercicio 01:
a. Defina una función con nombre celsius_a_fahrenheit() que reciba como argumento una cantidad en grados Celsius y retorne el equivalente en grados Fahrenheit.
b. Defina una función con nombre fahrenheit_a_celsius() que reciba como argumento una cantidad en grados Fahrenheit y retorne el equivalente en grados Celsius.
c. Defina una función con nombre imc() para calcular el índice de masa corporal (IMC) de una persona con base en su peso (en kilogramos) y su estatura (en metros).

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY-SA 4.0. Source code is available at https://github.com/gf0604-procesamientodatosgeograficos/2021i-leccion-06/, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".