Bucle sobre objetos en la programación R

Requisito previo: estructuras de datos en programación R

Uno de los mayores problemas con el bucle «for» es su consumo de memoria y su lentitud para ejecutar una tarea repetitiva. Y cuando se trata de manejar un gran conjunto de datos e iterarlo, no se recomienda el bucle for. R proporciona muchas alternativas para aplicar a los vectores para operaciones de bucle que son muy útiles cuando se trabaja de forma interactiva en una línea de comandos. En este artículo, nos ocupamos de apply()la función y sus variantes:

  • apply()
  • lapply()
  • sapply()
  • tapply()
  • mapply()

Veamos qué hace cada una de estas funciones.

Función de bucle Operación
apply() Aplica una función sobre los márgenes de un arreglo o array
lapply() Aplicar una función sobre una lista o un vector
sapply() Igual que lapply()pero con resultados simplificados
tapply() Aplicar una función sobre una array irregular
mapply() Versión multivariada delapply()
  • apply(): Esta función aplica una función dada sobre los márgenes de una array dada.

    aplicar (array, márgenes, función, …)

    array = lista de elementos
    márgenes = dimensión de la array a lo largo de la cual se debe aplicar la
    función función = la operación que desea realizar

    Ejemplo:

    # R program to illustrate
    # apply() function
      
    # Creating a matrix
    A = matrix(1:9, 3, 3)
    print(A)
      
    # Applying apply() over row of matrix
    # Here margin 1 is for row 
    r = apply(A, 1, sum)
    print(r)
      
    # Applying apply() over column of matrix
    # Here margin 2 is for column
    c = apply(A, 2, sum)
    print(c)

    Producción:

    [, 1] [, 2] [, 3]
    [1, ]    1    4    7
    [2, ]    2    5    8
    [3, ]    3    6    9
    
    [1] 12 15 18
    [1]  6 15 24
    
  • lapply():Esta función se utiliza para aplicar una función sobre una lista. Siempre devuelve una lista de la misma longitud que la lista de entrada.

    lapply(lista, función, …)

    lista =
    función de lista creada = la operación que desea realizar

    Ejemplo:

    # R program to illustrate
    # lapply() function
      
    # Creating a matrix
    A = matrix(1:9, 3, 3)
      
    # Creating another matrix
    B = matrix(10:18, 3, 3
      
    # Creating a list
    myList = list(A, B)
      
    # applying lapply()
    determinant = lapply(myList, det)
    print(determinant)

    Producción:

    [[1]]
    [1] 0
    
    [[2]]
    [1] 5.329071e-15
    
  • sapply():Esta función se utiliza para simplificar el resultado de lapply(), si es posible. A diferencia lapply()de , el resultado no siempre es una lista. La salida varía de las siguientes maneras:-
    • Si la salida es una lista que contiene elementos que tienen una longitud de 1, se devuelve un vector.
    • Si la salida es una lista donde todos los elementos son vectores de la misma longitud (>1), se devuelve una array.
    • Si la salida contiene elementos que no se pueden simplificar o elementos de diferentes tipos, se devuelve una lista.

    sapply(lista, función, …)

    lista =
    función de lista creada = la operación que desea realizar

    Ejemplo:

    # R program to illustrate
    # sapply() function
      
    # Creating a list
    A = list(a = 1:5, b = 6:10)
      
    # applying sapply()
    means = sapply(A, mean)
    print(means)

    Producción:

    a b
    3 8
    

    Se devuelve un vector ya que la salida tenía una lista con elementos de longitud 1.

  • tapply(): Esta función se utiliza para aplicar una función sobre un subconjunto de vectores dados por una combinación de factores.

    tapply(vector, factor, función, …)

    vector = vector creado
    factor = factor creado
    función = la operación que desea realizar

    Ejemplo:

    # R program to illustrate
    # tapply() function
      
    # Creating a factor
    Id = c(1, 1, 1, 1, 2, 2, 2, 3, 3)
      
    # Creating a vector
    val = c(1, 2, 3, 4, 5, 6, 7, 8, 9)
      
    # applying tapply()
    result = tapply(val, Id, sum)
    print(result)

    Producción:

    1  2  3 
    10 18 17 
    

    ¿Cómo funciona el código anterior?

  • mapply(): Es una versión multivariante de lapply(). Esta función se puede aplicar sobre varias listas simultáneamente.

    mapply(función, lista1, lista2, …)

    función = la operación que desea realizar

    list1, list2 = Listas creadas

    Ejemplo:

    # R program to illustrate
    # mapply() function
      
    # Creating a list
    A = list(c(1, 2, 3, 4))
      
    # Creating another list
    B = list(c(2, 5, 1, 6))
      
    # Applying mapply()
    result = mapply(sum, A, B)
    print(result)

    Producción:

    [1] 24
    

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *