For Loop en R con ejemplos de lista y matriz
Un bucle for es muy valioso cuando necesitamos iterar sobre una lista de elementos o un rango de números. Loop se puede utilizar para iterar sobre una lista, marco de datos, vector, matriz o cualquier otro objeto. Las llaves y corchetes son obligatorios.
En este tutorial, aprenderemos,
For Loop Sintaxis y ejemplos
For (i in vector) { Exp }
Aquí,
R recorrerá todas las variables en el vector y realizará el cálculo escrito dentro de la exp.
Veamos algunos ejemplos.
Bucle For en R Ejemplo 1: Iteramos sobre todos los elementos de un vector e imprimimos el valor actual.
# Create fruit vector fruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana') # Create the for statement for ( i in fruit){ print(i) }
Salida:
## [1] "Apple" ## [1] "Orange" ## [1] "Passion fruit" ## [1] "Banana"
Bucle For en R Ejemplo 2: crea una función no lineal usando el polinomio de x entre 1 y 4 y la almacenamos en una lista
# Create an empty list list <- c() # Create a for statement to populate the list for (i in seq(1, 4, by=1)) { list[[i]] <- i*i } print(list)
Salida:
## [1] 1 4 9 16
El bucle for es muy valioso para tareas de aprendizaje automático. Una vez que hayamos entrenado un modelo, debemos regularizarlo para evitar un ajuste excesivo. La regularización es una tarea muy tediosa porque necesitamos encontrar el valor que minimice la función de pérdida. Para ayudarnos a detectar esos valores, podemos utilizar un bucle for para iterar sobre un rango de valores y definir el mejor candidato.
Para recorrer una lista
Recorrer una lista es tan fácil y conveniente como recorrer un vector. Veamos un ejemplo
# Create a list with three vectors fruit <- list(Basket = c('Apple', 'Orange', 'Passion fruit', 'Banana'), Money = c(10, 12, 15), purchase = FALSE) for (p in fruit) { print(p) }
Salida:
## [1] "Apple" "Orange" "Passion fruit" "Banana" ## [1] 10 12 15 ## [1] FALSE
For Loop sobre una matriz
Una matriz tiene 2 dimensiones, filas y columnas. Para iterar sobre una matriz, tenemos que definir dos bucles for, uno para las filas y otro para la columna.
# Create a matrix mat <- matrix(data = seq(10, 20, by=1), nrow = 6, ncol =2) # Create the loop with r and c to iterate over the matrix for (r in 1:nrow(mat)) for (c in 1:ncol(mat)) print(paste("Row", r, "and column",c, "have values of", mat[r,c]))
Salida:
## [1] "Row 1 and column 1 have values of 10" ## [1] "Row 1 and column 2 have values of 16" ## [1] "Row 2 and column 1 have values of 11" ## [1] "Row 2 and column 2 have values of 17" ## [1] "Row 3 and column 1 have values of 12" ## [1] "Row 3 and column 2 have values of 18" ## [1] "Row 4 and column 1 have values of 13" ## [1] "Row 4 and column 2 have values of 19" ## [1] "Row 5 and column 1 have values of 14" ## [1] "Row 5 and column 2 have values of 20" ## [1] "Row 6 and column 1 have values of 15" ## [1] "Row 6 and column 2 have values of 10"