Funciones en R

Sintaxis para crear fnciones en R

function.name <- function(argumentos) {
  # computacion_en_los_argumentos
  # otro_codigo
}

Crear una función que muestra un mensaje que recibe como argumento

fn.showmsg <- function(msg) {
  # print(msg)  # Sugerencia mostrar con 
  # print() o cat()
  msg
}
fn.showmsg("Hola saludos desde la funcipon en R")
## [1] "Hola saludos desde la funcipon en R"
fn.showmsg(c(2,3,4,6,8))
## [1] 2 3 4 6 8

Crando un data frame y mandando llamar a la funcion fn.show

datos <- data.frame(nombres = c("Oscar", "Paty", "Lulu"), edades = c(20,34,56))
datos
##   nombres edades
## 1   Oscar     20
## 2    Paty     34
## 3    Lulu     56
fn.showmsg(datos)
##   nombres edades
## 1   Oscar     20
## 2    Paty     34
## 3    Lulu     56

Crear una funcion con argumentos varios

fn.varias.listas <- function(...) { # ... significan varios args
 l <- list(...)    # Se reciben varias listas list(...)
 print(l)         # Mostrar las listas que se recibieron
 }

Ejecutar la funcion de varios argumentos tipo listas

# Le enviamos a la función varios vectores, un df un pi y 20*2
fn.varias.listas(c(3,4,5,6,4), c("Ruben", "Mary", "Jorgue"), c(34.5, 34.8, 54.6), datos, pi, 20 * 2)    # Se enviearon varios vectore y un df
## [[1]]
## [1] 3 4 5 6 4
## 
## [[2]]
## [1] "Ruben"  "Mary"   "Jorgue"
## 
## [[3]]
## [1] 34.5 34.8 54.6
## 
## [[4]]
##   nombres edades
## 1   Oscar     20
## 2    Paty     34
## 3    Lulu     56
## 
## [[5]]
## [1] 3.141593
## 
## [[6]]
## [1] 40

Media de varias listas numéricas

fn.media.listas <- function(...) {
  l <- list(...) # Lista porque son de varios longitudes
 # l es una variable y list palabra reservada que significa listas
  
  print("Las medias (promedios) de cada conjunto de datos (listas):")
  print(l)  # Aqui se imprimen las listas todas al mismo tiempo
  print("Son ... :")
  for (i in 1:length(l)) {
     media <- mean(l[[i]]) # La media de cada lista
     print(media)   # Utilizar cat o print() dentro del for
  }
  
}  

Ejecutar

# Le enviamos varios vectores y una columna de un data frame
fn.media.listas(c(2,4,5,7), c(30,40,90), c(78,98,56), datos$edades)
## [1] "Las medias (promedios) de cada conjunto de datos (listas):"
## [[1]]
## [1] 2 4 5 7
## 
## [[2]]
## [1] 30 40 90
## 
## [[3]]
## [1] 78 98 56
## 
## [[4]]
## [1] 20 34 56
## 
## [1] "Son ... :"
## [1] 4.5
## [1] 53.33333
## [1] 77.33333
## [1] 36.66667

Ejejmplo de la función sort)=

sort(c("Lucy", "Manuel", "Arnulfo"), decreasing = FALSE)
## [1] "Arnulfo" "Lucy"    "Manuel"

Crear una función que recibe un vector numérico y muestra valores media, mas alto y bajo de un vector así como devolver el vector ordenado.

fnshow.datos.vector  <- function (argmivector, argmodo ) {
  print("Datos del vector. Media, Máximo, mínimo y ordenado")
  print(paste("Media: ",round(mean(argmivector),2)))
  print(paste("Máximo: ",max(argmivector)))
  print(paste("Mínimo: ",min(argmivector)))
  if (argmodo == 'A') {
    print(sort(argmivector, decreasing = FALSE)) # menor a mayor
  } else {
    print(sort(argmivector, decreasing = TRUE)) # mayor a menor
  }
} # cIERRA LA FUNCION

Ejecutando la función anterior

fnshow.datos.vector(c(3,4,5,6), 'A')
## [1] "Datos del vector. Media, Máximo, mínimo y ordenado"
## [1] "Media:  4.5"
## [1] "Máximo:  6"
## [1] "Mínimo:  3"
## [1] 3 4 5 6
fnshow.datos.vector(c(7,3,6,7,8,9,6,5,7,8,1,3,4,6,0,4,5,8,4,5,6), 'A')
## [1] "Datos del vector. Media, Máximo, mínimo y ordenado"
## [1] "Media:  5.33"
## [1] "Máximo:  9"
## [1] "Mínimo:  0"
##  [1] 0 1 3 3 4 4 4 5 5 5 6 6 6 6 7 7 7 8 8 8 9