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.

Para bucle en R
Para bucle en R

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"