Anidados para bucles en R

Jinku Hu 20 noviembre 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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - R Loop