Anidados para bucles en R

Lasha Khintibidze 20 noviembre 2021 14 julio 2021
  1. Bucle for en lenguaje R
  2. Utilice bucle anidado for para iterar sobre elementos de array en R
Anidados para bucles en R

Este artículo presentará los bucles for anidados en R.

Bucle for en lenguaje R

El bucle for está disponible en lenguaje R con heurísticas similares a las de la mayoría de los lenguajes de programación. Repite el bloque de código dado varias veces. La sintaxis del bucle for es la siguiente.

for (item in set) {}

item es un objeto que almacena el elemento iterado del set. El bucle for no devuelve salida, por lo que debemos llamar a la función print para generar el valor de word en cada iteración.

vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
           "spades", "ten", "spades")

for (word in vec1) {
  print(word)
}

Producción:

[1] "ace"
[1] "spades"
[1] "king"
[1] "spades"
[1] "queen"
[1] "spades"
[1] "jack"
[1] "spades"
[1] "ten"
[1] "spades"

También podemos implementar el bucle for, donde el índice se expone como una variable. En este caso, la función length se utiliza para calcular el tamaño del vector vec1 e iterar desde el primer elemento hasta el final. Tenga en cuenta que la notación 1: es importante y especifica el comienzo del rango. El siguiente código de ejemplo crea un vector de cadena copiado a otro vector del mismo tamaño usando el bucle for.

vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
           "spades", "ten", "spades")

vec2 <- vector(length = length(vec1))

for (i in 1:length(vec1)) {
  vec2[i] <- vec1[i]
}
vec2

Producción:

[1] "ace"    "spades" "king"   "spades" "queen"  "spades" "jack"   "spades" "ten"   
[10] "spades"

Utilice bucle anidado for para iterar sobre elementos de array en R

Los bucles anidados se pueden implementar utilizando la estructura de bucle for. Esto se puede utilizar para iterar sobre elementos del array e inicializarlos con valores aleatorios. Tenga en cuenta que la notación general es la misma que en el ejemplo anterior, excepto que el final del rango se calcula con las funciones nrow y ncol. nrow y ncol devuelven el número de filas o columnas del array, respectivamente.

mat1 <- matrix(0, nrow = 5, ncol = 5)
for (i in 1:nrow(mat1)) {
  for (j in 1:ncol(mat1)) {
    mat1[i, j] <- sample(1:100, 1, replace=TRUE)
  }
}
mat1

Producción:

[,1] [,2] [,3] [,4] [,5]
[1,]   13   14   13   67   98
[2,]   28   50   23   55    9
[3,]    3   65   99   17   93
[4,]   18    6   20   50   46
[5,]   51   76   33   26    3

Aunque, la estructura de bucle anidado funciona bien en el código de ejemplo anterior. La inicialización del array se realiza mejor utilizando la función sample encadenada directamente como primer argumento de la función matrix, como se muestra en el siguiente fragmento.

mat2 <- matrix(sample(1:100, 25, replace = TRUE), ncol = 5)
mat2

Producción:

[,1] [,2] [,3] [,4] [,5]
[1,]   85   19   26   53   88
[2,]   44   50   66   96   56
[3,]   42   46   37   19   66
[4,]   43   23   13   32   67
[5,]   56   51   21    2   56

Artículo relacionado - R Loop