Una guía para aplicar (), lapply (), sapply () y tapply () en R

Este tutorial explica las diferencias entre las funciones integradas de R apply () , sapply () , lapply () y tapply () junto con ejemplos de cuándo y cómo usar cada función.

solicitar()

Utilice la función apply () cuando desee aplicar una función a las filas o columnas de una matriz o marco de datos.

La sintaxis básica de la función apply () es la siguiente:

aplicar (X, MARGIN, FUN)

  • X es el nombre de la matriz o marco de datos
  • MARGEN indica en qué dimensión realizar una operación (1 = fila, 2 = columna)
  • DIVERSIÓN es la operación específica que desea realizar (por ejemplo, mínimo, máximo, suma, media, etc.)

El siguiente código ilustra varios ejemplos de apply () en acción.

#crea un marco de datos con tres columnas y cinco filas
data <- data.frame (a = c (1, 3, 7, 12, 9),
                   b = c (4, 4, 6, 7, 8),
                   c = c (14, 15, 11, 10, 6))
datos

# a B C
# 1 1 4 14
# 2 3 4 15
# 3 7 6 11
# 4 12 7 10
# 5 9 8 6

# encontrar la suma de cada fila
aplicar (datos, 1, suma)

# [1] 19 22 24 29 23

# encontrar la suma de cada columna
aplicar (datos, 2, suma)

# a B C 
# 32 29 56 

# encontrar la media de cada fila
aplicar (datos, 1, media)

# [1] 6.333333 7.333333 8.000000 9.666667 7.666667

# encontrar la media de cada columna, redondeada a un decimal
redondo (aplicar (datos, 2, media), 1)

# a B C 
# 6,4 5,8 11,2 

# encontrar la desviación estándar de cada fila
aplicar (datos, 1, sd)

# [1] 6.806859 6.658328 2.645751 2.516611 1.527525

# encontrar la desviación estándar de cada columna
aplicar (datos, 2, sd)

# a B C 
# 4.449719 1.788854 3.563706 

lapply ()

Utilice la función lapply () cuando desee aplicar una función a cada elemento de una lista, vector o marco de datos y obtener una lista como resultado.

La sintaxis básica de la función lapply () es la siguiente:

lapply (X, FUN)

  • X es el nombre de la lista, vector o marco de datos
  • DIVERSIÓN es la operación específica que desea realizar

El siguiente código ilustra varios ejemplos del uso de lapply () en las columnas de un marco de datos.

#crear un marco de datos con tres columnas y cinco filas
 data <- data.frame (a = c (1, 3, 7, 12, 9),
                   b = c (4, 4, 6, 7, 8),
                   c = c (14, 15, 11, 10, 6))
datos

# a B C
# 1 1 4 14
# 2 3 4 15
# 3 7 6 11
# 4 12 7 10
# 5 9 8 6

# encontrar la media de cada columna y devolver los resultados como una lista
lapply (datos, media)

# $ a
# [1] 6,4
#
# $ b
# [1] 5.8
#
# $ c
# [1] 11,2

#multiplica los valores de cada columna por 2 y devuelve los resultados como una lista
lapply (datos, función (datos) datos * 2)

# $ a
# [1] 2 6 14 24 18
#
# $ b
# [1] 8 8 12 14 16
#
# $ c
# [1] 28 30 22 20 12

También podemos usar lapply () para realizar operaciones en listas. Los siguientes ejemplos muestran cómo hacerlo.

#crear una lista x <- lista (a = 1, b = 1: 5, c = 1:10
 )
X

# $ a
# [1] 1
#
# $ b
# [1] 1 2 3 4 5
#
# $ c
# [1] 1 2 3 4 5 6 7 8 9 10

# encontrar la suma de cada elemento en la lista
lapply (x, suma)

# $ a
# [1] 1
#
# $ b
# [1] 15
#
# $ c
# [1] 55

# encontrar la media de cada elemento en la lista
lapply (x, mean)

# $ a
# [1] 1
#
# $ b
# [1] 3
#
# $ c
# [1] 5.5

#multiplica los valores de cada elemento por 5 y devuelve los resultados como una lista
lapply (x, función (x) x * 5)

# $ a
# [15
#
# $ b
# [1] 5 10 15 20 25
#
# $ c
# [1] 5 10 15 20 25 30 35 40 45 50

sapply ()

Utilice la función sapply () cuando desee aplicar una función a cada elemento de una lista, vector o marco de datos y obtener un vector en lugar de una lista como resultado.

La sintaxis básica de la función sapply () es la siguiente:

sapply (X, DIVERSIÓN)

  • X es el nombre de la lista, vector o marco de datos
  • DIVERSIÓN es la operación específica que desea realizar

El siguiente código ilustra varios ejemplos del uso de sapply () en las columnas de un marco de datos.

#crear un marco de datos con tres columnas y cinco filas
 data <- data.frame (a = c (1, 3, 7, 12, 9),
                   b = c (4, 4, 6, 7, 8),
                   c = c (14, 15, 11, 10, 6))
datos

# a B C
# 1 1 4 14
# 2 3 4 15
# 3 7 6 11
# 4 12 7 10
# 5 9 8 6

# encontrar la media de cada columna y devolver los resultados como una aplicación vectorial
 (datos, media)

# a B C 
# 6,4 5,8 11,2 

#multiplica los valores en cada columna por 2 y devuelve los resultados como una matriz
 sapply (datos, función (datos) datos * 2)

# a B C
# [1,] 2 8 28
# [2,] 6 8 30
# [3,] 14 12 22
# [4,] 24 14 20
# [5,] 18 16 12

También podemos usar sapply () para realizar operaciones en listas. Los siguientes ejemplos muestran cómo hacerlo.

#crear una lista x <- lista (a = 1, b = 1: 5, c = 1:10
 )
X

# $ a
# [1] 1
#
# $ b
# [1] 1 2 3 4 5
#
# $ c
# [1] 1 2 3 4 5 6 7 8 9 10

# encontrar la suma de cada elemento en la lista
sapply (x, suma)

# a B C 
# 1 15 55 

# encontrar la media de cada elemento en la lista
sapply (x, mean)

# a B C 
# 1.0 3.0 5.5

tapply ()

Utilice la función tapply () cuando desee aplicar una función a subconjuntos de un vector y los subconjuntos están definidos por algún otro vector, generalmente un factor.

La sintaxis básica de la función tapply () es la siguiente:

toque (X, ÍNDICE, DIVERSIÓN)

  • X es el nombre del objeto, típicamente un vector
  • ÍNDICE es una lista de uno o más factores
  • DIVERSIÓN es la operación específica que desea realizar

El siguiente código ilustra un ejemplo del uso de tapply () en el iris del conjunto de datos R incorporado .

#ver las primeras seis líneas del conjunto de datos de iris
cabeza (iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies
# 1 5,1 3,5 1,4 0,2 setosa
# 2 4,9 3,0 1,4 0,2 setosa
# 3 4,7 3,2 1,3 0,2 setosa
# 4 4,6 3,1 1,5 0,2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5,4 3,9 1,7 0,4 setosa

#Encuentre la máxima longitud de sépalo de cada una de las tres especies
tapply (iris $ Sepal.Length, iris $ Species, máx.)

#setosa versicolor virginica 
# 5,8 7,0 7,9 

# encontrar la media Sepal.Width de cada una de las tres especies
 tapply (iris $ Sepal.Width, iris $ Species, media)

# setosa versicolor virginica 
# 3.428 2.770 2.974

#encuentre el mínimo de Petal.Width de cada una de las tres Especies
 tapply (iris $ Petal.Width, iris $ Species, min)

# setosa versicolor virginica 
# 0,1 1,0 1,4 
  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Deja un comentario en el muro del agradecimiento para que todos sepán que Statologos explica mejor y facil y si te es viable puedes hacer una donación:

Puedes hacer un donativo
Muro del agradecimiento

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

A menudo, es posible que desee convertir una fecha y hora en una fecha en pandas. Afortunadamente, esto es fácil…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!