Los bucles son muy valiosos cuando necesitamos repetir una lista de elementos o un rango de números. Se puede utilizar un bucle para repetir una lista, un marco de datos, un vector, una matriz o cualquier otra cosa. Las llaves y el corchete son obligatorios.
En este tutorial, aprenderemos,
Para ejemplos y sintaxis de bucle
For (i in vector) { Exp }
Seo
R doblará todas las variables en el vector y realizará el cálculo escrito dentro del exp.
Veremos algunos ejemplos.
Ejemplo 1: Imitamos todos los aspectos 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) }
Producción:
## [1] "Apple" ## [1] "Orange" ## [1] "Passion fruit" ## [1] "Banana"
Ejemplo 2: se crea una función no lineal usando polyimals 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)
Producción:
## [1] 1 4 9 16
El ciclo es muy valioso para las tareas de aprendizaje automático. Después de entrenar un modelo, necesitamos regular el modelo para evitar un ajuste excesivo. Regular 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 usar bucles para repetir un rango de valores y definir el mejor candidato.
Para bucle sobre la lista
Inclinarse sobre una lista es tan fácil y conveniente como inclinarse sobre 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) }
Producción:
## [1] "Apple" "Orange" "Passion fruit" "Banana" ## [1] 10 12 15 ## [1] FALSE
Para bucle sobre matriz
Tiene una matriz bidimensional, filas y columnas. Para repetir una matriz, necesitamos definir dos para un ciclo, a saber, 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]))
Producción:
## [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"