¿Cómo crear un bucle For anidado en R?

Un bucle en un lenguaje de programación es una secuencia de instrucciones que se ejecutan una tras otra a menos que se cumpla una condición final. El uso de bucles es bastante frecuente en un programa.

Necesidad de un bucle

Consideremos un escenario en el que queremos imprimir números naturales del 1 al 3. Simplemente podemos imprimirlos uno por uno. Pero supongamos que el rango es alto, 1 a 100 o 1 a 10000 o incluso 1 a 100000, luego imprimirlos uno por uno es una tarea tediosa. En tales casos, los bucles son bastante eficientes y también mejoran la legibilidad del código fuente. En R, los bucles se clasifican ampliamente en tres categorías: for, while y repeat. Este artículo se centra en el funcionamiento de For-loop en R.

Para bucle en R:

El bucle for es uno de los tipos de bucles más utilizados. Es una instrucción de control que se utiliza en escenarios en los que se requiere la ejecución de varias instrucciones. En R, for loop sigue la siguiente sintaxis.

Sintaxis:

para (elemento en secuencia) {

     // cuerpo

}

Aquí, un elemento es el valor real en la secuencia uno tras otro y comenzando desde el principio.

Bucle for anidado en R:

Un bucle for anidado tiene un bucle for dentro de otro bucle for. Para cada una de las iteraciones en el bucle for externo, el bucle interno se ejecutará a menos que se cumpla una condición final para el bucle interno. Una vez que se ejecuta un bucle for interno para una iteración externa en particular, el bucle for externo pasa a la siguiente iteración y ahora el bucle interno se ejecutará para esta iteración. Este proceso se repite hasta que se cumple la condición final para el bucle for externo. El bucle for anidado se puede visualizar como una iteración sobre coordenadas enteras una por una en un espacio bidimensional. Por ejemplo, imprimir 

(0,0)   (0,1)   (0,2)
(1,0)   (1,1)   (1,2)
(2,0)   (2,1)   (2,2) 
(3,0)   (3,1)   (3,2) 

A continuación se muestra la sintaxis del bucle for anidado en R.

Sintaxis:

para (elemento1 en secuencia1) {

     for(elemento2 en secuencia2)

          // cuerpo

}

Ejemplo 1: en el siguiente programa, estamos iterando de 0 a 3 en el bucle externo y para cada valor en el bucle for externo, estamos iterando de 0 a 3 en el bucle for interno.

R

# R program to illustrate the working of
# nested for-loop 
  
# Iterating over 0 to 3 in the outer
# for-loop
for (x in 0:3){
        
      # Iterating over 0 to 3 in the inner 
    # for-loop
      for (y in 0:3)
    {
        # Print x and y 
          print(paste("(", x, ",", y, ")"))
  
    }
}

Producción:

Ejemplo 2: En el siguiente programa, estamos iterando de 1 a 5 en el ciclo externo y para cada uno de los valores en el ciclo for externo, estamos iterando de 1 a 5 en el ciclo for interno y simultáneamente imprimiendo la suma de los dos valores

R

# R program to illustrate the working 
# of nested for-loop
  
# Iterating over 1 to 5 in the outer 
# for-loop
for(number1 in 1:5)
{
      # Iterating over 1 to 5 in the inner 
    # for-loop
    for(number2 in 1:5)
    {
        # Print the sum of number1 and number2
        print(paste(number1, "+", number2, "=", 
                    number1 + number2));
    }
}

Producción:

Siguiente declaración:

La mayoría de los lenguajes brindan una funcionalidad mediante la cual podemos omitir la iteración actual en este momento e ir a la siguiente iteración, si existe. Para este propósito, tenemos la declaración » siguiente » en R.

Ejemplo 1: en el siguiente programa, nos saltamos el bucle for interno si el valor de number1 es igual a uno.

R

# R program to illustrate the working
# of next statement in nested for-loop
  
# Iterating over outer loop
for(number1 in 1:5)
{
      if(number1 == 1)
      next
      # Iterating over outer loop
    for(number2 in 1:5)
    {
        # Print the sum of number1 and number2
        print(paste(number1, "+", number2, "=",
                    number1 + number2));
    }
}

Producción:

Ejemplo 2: en el siguiente programa, nos saltamos la declaración de impresión si el valor de number2 es igual a uno en el bucle for interno.

R

# R program to illustrate the working
# of next statement in nested for-loop
  
# Iterating over outer loop
for(number1 in 1:5)
{
      # Iterating over outer loop
    for(number2 in 1:5)
    {
        # If number1 is equal to 1
        # Then skip the print statement below
        # and move to the next iteration
        if(number2 == 1)
              next
        
        # Print the sum of number1 and number2
        print(paste(number1, "+", number2, "=",
                    number1 + number2));
    }
} 

Producción:

Declaración de ruptura:

La mayoría de los lenguajes brindan funcionalidad mediante la cual podemos detener la iteración de for-loop en este momento y salir del alcance actual de for-loop. Para este propósito, tenemos la instrucción “ break ” en R. La instrucción break en R es la misma que la instrucción break en C o C++.

Ejemplo 1: en el siguiente programa, el flujo de control del bucle for externo sale del alcance una vez que el valor de number1 llega a 2.

R

# R program to illustrate the working
# of break statement in nested for-loop
  
# Iterating over 1 to 5 in outer for-loop
for(number1 in 1:5)
{
    # If number1 is equal to 2
    # then break the flow of control
    # and come out of the outer loop
      if(number1 == 2)
      break
        
    # Iterating over 1 to 5 in inner for-loop
    for(number2 in 1:5)
    {
        # Print the sum of number1 and number2
        print(paste(number1, "+", number2, "=", 
                    number1 + number2));
    }
}

Producción:

Ejemplo 2: en el siguiente programa, el flujo de control del bucle for interno sale del alcance una vez que el valor de número 2 llega a 2.

R

# R program to illustrate the working of
# break statement in nested for-loop
  
# Iterating over 1 to 5 in the outer for-loop
for(number1 in 1:5)
{
  
# Iterating over 1 to 5 in the inner for-loop
    for(number2 in 1:5)
    {
        # If number2 is equal to 2 then stop
        # the flow of control
        # and come out of the inner for-loop at the moment
        if(number2 == 2)
            break
              
          # Print the sum of number1 and number2
        print(paste(number1, "+", number2, "=", 
                    number1 + number2));
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *