Tema 3 Funciones

Manuel Barrios

3/5/2022

Centro Universitario de Zacapa

Instituto de Investigaciones - Departamento de Postgrado

Maestría en Investigación

Curso de Análisis y Progración de Datos

Funciones

En R una función es un conjunto de instrucciones para realizar una operación determinada, R cuenta con una amplia variedad de funciones, tales como: seq(), mean(), max(), sum(x) y paste(). En R también es posible crear nuevas funciones.

La estructura de una función en R es la siguiente

nombre_funcion <- function(argumentos) { cuerpo de la función}

Vamos a crear una función para realizar una suma:

suma<-function(x,y) {x+y}
suma(8,20)
## [1] 28
suma(156,-56)
## [1] 100
suma(c(10,20),55) #tecleado dinámico, podemos operar dos sumas en una solo linea.
## [1] 65 75

Ahora vamos a crear una función para automatizar un proceso mediante un loop

pot2 <- function(x) {
   for(i in 1:x) {
       y <- i^2 
       texto1<- "El cuadrado de "
       texto2<- " es "
      print(c(texto1,y^0.5,texto2, y))
   }
}

pot2(10)
## [1] "El cuadrado de " "1"               " es "            "1"              
## [1] "El cuadrado de " "2"               " es "            "4"              
## [1] "El cuadrado de " "3"               " es "            "9"              
## [1] "El cuadrado de " "4"               " es "            "16"             
## [1] "El cuadrado de " "5"               " es "            "25"             
## [1] "El cuadrado de " "6"               " es "            "36"             
## [1] "El cuadrado de " "7"               " es "            "49"             
## [1] "El cuadrado de " "8"               " es "            "64"             
## [1] "El cuadrado de " "9"               " es "            "81"             
## [1] "El cuadrado de " "10"              " es "            "100"

Generaliación de una función

mat <- function(a, b, operacion) {
  if (operacion == "suma") { 
  a + b 
  }  else if (operacion == "resta") { 
  a - b 
  }  else if (operacion == "multiplicacion") { 
  a * b 
  } else if (operacion == "division") { 
  a / b 
  } else {stop("Operación desconocida, revise la operación")
  }
  }


mat(100,150,"resta")
## [1] -50
mat(50,75,"division")
## [1] 0.6666667
mat(55,3,"multiplicacion")
## [1] 165
mat(55,3,"multiplicacion")
## [1] 165
#mat(55,5,"mult")# va a generar un error, ver stop en la función
mat(as.Date("2022-03-05"), 10, "suma")
## [1] "2022-03-15"
mat(as.Date("2014-03-05"), 10, "resta")
## [1] "2014-02-23"