Bucles anidados
Parte de la sección Fundamentos del Journey de R de Coddy — lección 44 de 78.
Puedes colocar un bucle dentro de otro bucle para crear un bucle anidado. El bucle interno se ejecuta por completo en cada iteración del bucle externo, lo que resulta útil cuando se trabaja con combinaciones o patrones tipo cuadrícula.
for (i in 1:3) {
for (j in 1:2) {
cat("i =", i, ", j =", j, "\n")
}
}Salida:
i = 1 , j = 1
i = 1 , j = 2
i = 2 , j = 1
i = 2 , j = 2
i = 3 , j = 1
i = 3 , j = 2Para cada valor de i, el bucle interno recorre todos los valores de j. Cuando i es 1, j va de 1 a 2. Luego i se convierte en 2, y j comienza de nuevo de 1 a 2.
Un ejemplo práctico es crear un patrón de multiplicación simple:
for (row in 1:3) {
for (col in 1:3) {
cat(row * col, " ")
}
cat("\n")
}Resultado:
1 2 3
2 4 6
3 6 9El bucle externo controla las filas, mientras que el bucle interno maneja cada columna dentro de esa fila. Después de completar cada fila, imprimimos un salto de línea para pasar a la siguiente línea.
Desafío
FácilLee dos números de la entrada: rows y cols.
Usa bucles anidados para imprimir un rectángulo de números donde cada celda contenga la suma de su número de fila y su número de columna. Las filas se enumeran del 1 al rows, y las columnas se enumeran del 1 al cols.
Imprime cada fila en su propia línea, con los valores separados por un solo espacio. Usa cat() para la salida, añadiendo una nueva línea después de cada fila.
Por ejemplo, si las entradas son 3 y 4, la salida debería ser:
2 3 4 5
3 4 5 6
4 5 6 7En la primera fila (fila 1), los valores son 1+1=2, 1+2=3, 1+3=4, 1+4=5. En la segunda fila (fila 2), los valores son 2+1=3, 2+2=4, 2+3=5, 2+4=6, y así sucesivamente.
Hoja de referencia
Un bucle anidado es un bucle colocado dentro de otro bucle. El bucle interno se ejecuta completamente por cada iteración del bucle externo.
for (i in 1:3) {
for (j in 1:2) {
cat("i =", i, ", j =", j, "\n")
}
}Para cada valor de i, el bucle interno recorre todos los valores de j.
Ejemplo de creación de un patrón de multiplicación:
for (row in 1:3) {
for (col in 1:3) {
cat(row * col, " ")
}
cat("\n")
}El bucle externo controla las filas, mientras que el bucle interno maneja cada columna dentro de esa fila. Usa cat("\n") para imprimir una nueva línea después de completar cada fila.
Pruébalo tú mismo
# Leer entrada
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)
# TODO: Escribe tu código a continuación
# Usa bucles anidados para imprimir un rectángulo donde cada celda contenga fila + columna
# Usa cat() para imprimir valores separados por espacios, con una nueva línea después de cada filaEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos (AND, OR)Operadores lógicos Parte 2 (NOT)Resumen - Lógica simpleLógica vectorizada Parte 1Lógica vectorizada Parte 27Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario2Variables y tipos de datos
Tipo de dato numéricoTipo de dato enteroTipo de dato de caracteresTipo de dato lógicoComprobación de tipos de datosConvenciones de nomenclaturaValores faltantes: NAResumen - Creación de variables8Bucles
Bucle ForBucle WhileBreakNext (Continue)Repaso - FactorialGeneración de secuencias (seq, :)Bucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosDivisión entera y móduloOperadores de asignaciónRepaso - Matemáticas simplesOperadores de comparación6E/S básica
Imprimir salidaCat para salidaSalida con variablesLectura de entrada con readline()Conceptos básicos de conversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso9Funciones
Declarar una funciónArgumentos de una funciónValores de retornoRepaso - Función SigmaRepaso - Función de validaciónValores de parámetros por defecto