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: