<- function(arg1, arg2, ...) {
nombre_funcion # Cuerpo de la función
return(resultado)
}
Programación en R para Data Science
Creación de funciones y familia apply
Funciones en R
Las funciones en R son bloques de código que están diseñados para realizar una tarea específica y son fundamentales en la programación en R. Una función es esencialmente una pieza de código que toma uno o más valores, realiza alguna operación y devuelve un resultado.
Funciones creadas por el usuario:
La estructura básica de una función en R es:
<- function(a, b) {
suma return(a + b)
}suma(5, 3) # Resultado: 8
[1] 8
Funciones Anónimas (Lambda)
También son creadas por el usuario pero su creación es “al vuelo”, es decir, no se necesita asignar un nombre. Estas son útiles para operaciones rápidas que no requieren ser reutilizadas, pero útiles como argumento de otras funciones que requieren como atributo una función y esta no existe o se quiere personalizar.
function(x) x**2)(5) # Resultado: 25 (
[1] 25
La familia apply
Las funciones de la familia apply proporcionan una forma eficiente y concisa de aplicar una función a los elementos de una estructura de datos, sin la necesidad de bucles explícitos. Estas funciones pueden ser más rápidas y más legibles que sus contrapartes de bucle.
sapply
Aplica una función a los elementos de una lista o vector, simplificando el resultado si es posible.
<- c("apple", "banana", "cherry")
strings sapply(strings, nchar) # nchar es la función a aplicar a todos los elementos de strings
apple banana cherry
5 6 6
lapply
Funciona de manera similar a sapply, pero siempre devuelve una lista.
<- list(a = 1:3, b = 4:6, c = 7:9)
nums lapply(nums, function(x) x**2)
$a
[1] 1 4 9
$b
[1] 16 25 36
$c
[1] 49 64 81
<- sapply(nums, function(x) x**2)
m m
a b c
[1,] 1 16 49
[2,] 4 25 64
[3,] 9 36 81
apply
apply(m, 2, sum)
a b c
14 77 194
apply(m, 1, sum)
[1] 66 93 126
<- matrix(1:9, nrow=3, byrow=TRUE)
mat1 <- 2*mat1
mat2 <- 3*mat1
mat3 <- array(data = c(mat1, mat2, mat3), dim = c(3, 3, 3))
arr arr
, , 1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
, , 2
[,1] [,2] [,3]
[1,] 2 4 6
[2,] 8 10 12
[3,] 14 16 18
, , 3
[,1] [,2] [,3]
[1,] 3 6 9
[2,] 12 15 18
[3,] 21 24 27
¿Qué hace apply en cada uno de los 3 casos con la función sum en el array de 3 dimensiones?
apply(arr, 1, sum)
apply(arr, 2, sum)
apply(arr, 3, sum)