If - Else anidados
Parte de la sección Fundamentos del Journey de R de Coddy — lección 25 de 78.
A veces, dos opciones no son suficientes. ¿Qué pasa si necesitas verificar múltiples condiciones y manejar cada una de manera diferente? Puedes colocar una sentencia if-else dentro de otro bloque if o else para crear rutas de decisión más complejas.
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}R primero comprueba si la puntuación es 90 o superior. Como 85 no cumple esa condición, se mueve al bloque else.
Dentro, otro if comprueba si la puntuación es al menos 80. Dado que 85 pasa esta prueba, imprime "Grade: B".
R proporciona una forma más limpia de escribir esto usando else if:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}Ambos enfoques funcionan de la misma manera, pero else if mantiene su código más plano y fácil de leer. Puede encadenar tantos bloques else if como sea necesario, y R ejecutará solo el primer bloque cuya condición sea verdadera.
Desafío
FácilCrea un sistema de precios de boletos utilizando sentencias if-else anidadas o else if para determinar el precio del boleto según la edad.
Se te proporciona la siguiente variable:
age <- 25Escribe una serie de condiciones para determinar e imprimir el precio del boleto basándote en estas reglas:
- Si la edad es menor que 5, imprime
"Free" - Si la edad está entre 5 y 12 (inclusive), imprime
"$5" - Si la edad está entre 13 y 17 (inclusive), imprime
"$8" - Si la edad está entre 18 y 64 (inclusive), imprime
"$12" - Si la edad es 65 o mayor, imprime
"$7"
Usa la función print() para tu salida.
Hoja de referencia
Puedes anidar sentencias if-else unas dentro de otras para comprobar múltiples condiciones:
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}Un enfoque más limpio es usar else if para encadenar múltiples condiciones:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}R evalúa las condiciones en orden y ejecuta solo el primer bloque cuya condición sea verdadera. Puedes encadenar tantos bloques else if como sea necesario.
Pruébalo tú mismo
# Variable proporcionada
age <- 25
# TODO: Escribe tu código a continuación
# Usa sentencias if-else anidadas o else if para determinar el precio de la entrada
# basado en las reglas de edad proporcionadasEsta 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