Los bucles son uno de los conceptos básicos de la pro­gra­ma­ción. Ga­ra­n­ti­zan que ciertos pasajes de código se ejecuten re­pe­ti­da­me­n­te bajo una de­te­r­mi­na­da condición. Con los while loops en R, una sección se repite hasta que la condición es­pe­ci­fi­ca­da pre­via­me­n­te se convierte en falsa.

¿Para qué se utilizan los while loops en R?

Los while loops se utilizan para ejecutar re­pe­ti­da­me­n­te un bloque de código en función de una condición. Mientras esta condición sea verdadera, se ejecuta el código del while loop.

Los bucles se utilizan con fre­cue­n­cia en pro­gra­ma­ción R para conocer los elementos de una lista R y para realizar acciones es­pe­cí­fi­cas sobre ellos de forma in­di­vi­dual. Por ejemplo, puedes mostrar en pantalla cualquier cadena de una lista de cadenas R. Además, los while loops en R se utilizan para la ejecución co­n­di­cio­nal de código. Los bucles como el while loop son la base de muchos al­go­ri­t­mos de or­de­na­ción conocidos que organizan una base de datos según de­te­r­mi­na­dos criterios.

Es­tru­c­tu­ra y sintaxis de los while loops en R

La sintaxis de los while loops en R es similar a la de los while loops en la mayoría de los demás lenguajes de pro­gra­ma­ción. En la cabecera del bucle, que se introduce con la palabra clave while, la condición se es­pe­ci­fi­ca entre pa­ré­n­te­sis. Esta debe ser verdadera para que se ejecute el núcleo del bucle. Este núcleo no es más que su propio bloque de código después de la cabecera del bucle, encerrado entre llaves.

Para ilu­s­trar­lo, hemos creado un ejemplo. Este ejemplo de bucle en R muestra un while loop que devuelve valores del 1 al 10:

x <- 1
while (x <= 10) {
    print(x)
    x <- x + 1
}
R

Ejemplo: Bubble Sort en R

Bubble Sort es un algoritmo de or­de­na­ción clásico que se utiliza para ordenar los elementos de un vector en R o de un array en R en orden as­ce­n­de­n­te. En este algoritmo de or­de­na­ción, se utiliza un while loop para ejecutar el código de or­de­na­ción hasta que todos los elementos del vector estén ordenados:

bubblesort <- function(x) {
    swapped <- TRUE
    n <- length(x) - 1
    while (swapped) {
        swapped <- FALSE
        for (i in 1:n) {
            if (x[i] > x[i+1]) {
                tmp <- x[i]
                x[i] <- x[i+1]
                x[i+1] <- tmp
                swapped <-TRUE
                }
        }
    }
    return(x)
}
R

En el código anterior, se crea una función R llamada bu­b­ble­so­rt. Esto garantiza que un vector numérico se ordena en orden as­ce­n­de­n­te. El bucle while se utiliza para llevar a cabo el proceso de in­te­r­ca­m­bio, que es esencial para Bubble Sort, hasta que se complete la or­de­na­ción.

In­te­rru­p­ción del bucle while en R

Para salir pre­ma­tu­ra­me­n­te de un while loop bajo una de­te­r­mi­na­da condición, puedes utilizar la palabra clave “break”. Esto garantiza que se sale del bucle y no se vuelve a entrar en él. Aquí tienes un ejemplo de la in­s­tru­c­ción “break” para ex­pli­car­lo:

x <- 10
while (x >= 0) {
    print(x)
    if (x == 5) {
        break
        }
        x <- x - 1
}
R

El bucle anterior muestra los números del 10 al 5 en la pantalla. Cuando la variable “x” alcanza el valor 5, se ejecuta la condición R “if” y el bucle finaliza pre­ma­tu­ra­me­n­te llamando a “break”.

Otros bucles en R

El while loop en R no es el único tipo de bucle en R. También existe el for loop, que a menudo se considera una especie de bucle de recuento, y el repeat loop, que se utiliza para ejecutar código múltiples veces, in­de­pe­n­die­n­te­me­n­te de una condición. Los bucles de re­pe­ti­ción deben fi­na­li­zar­se con la palabra clave “break”, de lo contrario son bucles infinitos.

For loop en R

Los for loops se utilizan cuando se conoce de antemano el número de ite­ra­cio­nes. El número de ite­ra­cio­nes se es­pe­ci­fi­ca ex­plí­ci­ta­me­n­te en la cabecera del bucle. Un for loop que produce números del 1 al 5 tiene el siguiente aspecto:

for (z in 1:5) {
print(i)
}
R

Repeat loop en R

Los repeat loops en R e utilizan para ejecutar código varias veces, in­de­pe­n­die­n­te­me­n­te de una condición. Si no estás empezando en esto de la pro­gra­ma­ción, pro­ba­ble­me­n­te estés fa­mi­lia­ri­za­do con los bucles do-while de otros lenguajes de pro­gra­ma­ción como Java. En R no existe un bucle do-while explícito en el que un bloque de código se ejecute al menos una vez. No obstante, la fu­n­cio­na­li­dad puede im­ple­me­n­tar­se fá­ci­l­me­n­te con bucles de re­pe­ti­ción:

x <- 1
repeat {
    print(x)
    if (x >= 10) {
        break
        }
x <- x + 1
}
R

El ejemplo de código anterior produce números del 1 al 10. El código se ejecuta al menos una vez (en un clásico bucle do-while en el “do codeblock”) antes de la in­s­tru­c­ción“if”, que finaliza el bucle si la condición es­pe­ci­fi­ca­da es verdadera.

Ir al menú principal