Estructuras de control de flujo condicionales en R y en Python | Macarena Quiroga

Estructuras de control de flujo condicionales en R y en Python

Comparación entre la sintaxis de R y de Python para ejecutar comandos como if, ifelse y elif.

Las estructuras de control de flujo condicionales sirven para ejecutar determinado código cuando se cumplen (o no) determinadas condiciones, que serán evaluadas como verdaderas o falsas. Las condiciones posibles son tres: - Si ocurre A, entonces ocurre B. - Si ocurre A, entonces ocurre B; sino ocurre C. - Si ocurre A, entonces ocurre B; sino, si ocurre C entonces ocurre D; sino ocurre E.

En ambos lenguajes, las palabras reservadas para esas tres situaciones son if, if...else y elif/else if respectivamente. Más allá de eso, la diferencia más grande entre ambos es la sintaxis. Veamos cada caso.


Condicional if

Supongamos que le pedimos al usuario que ingrese su edad para evaluar si es mayor de edad. En R, el condicional se ve de la siguiente forma:

edad <- as.numeric(readline(prompt = "Escriba su edad: "))
if (edad >= 18){
  print("El usuario es mayor de edad.")
}

En este caso, la estructura solo evalúa si el usuario es mayor de edad, en cuyo caso lo avisa con la frase propuesta. Pero dado que no se propone qué hacer si la sentencia es evaluada como FALSE, en el caso que el usuario no sea mayor de edad el código no devuelve nada.

En Python, este mismo bloque se ve de la siguiente forma:

edad = int(input("Escriba su edad: "))
if edad >= 18:
  print("El usuario es mayor de edad.")

Como vemos, ambos bloques de código son muy parecidos; la gran diferencia radica en que en R se deben encerrar entre paréntesis las sentencias a evaluar, y entre llaves el código que se ejecuta.


Condicional if…else

En el caso que necesitemos especificar otro código para el caso en el que la sentencia evaluada sea FALSE, utilizamos la función else. En R:

if (edad >= 18){
  print("El usuario es mayor de edad.")
} else {
  print("El usuario no es mayor de edad.")
}

R también tiene la función ifelse() que unifica esa secuencia en una sola línea de código, donde el primer argumento es la sentencia a evaluar, el segundo es el resultado en el caso que sea TRUE y el tercero en el caso que sea FALSE:

ifelse(edad >= 18, "El usuario es mayor de edad", "El usuario no es mayor de edad")

En Python:

if edad >= 18:
  print("El usuario es mayor de edad.")
else:
  print("El usuario no es mayor de edad.")


Condicional elif

En algunos casos, además de establecer el código a ejecutar en el caso que la sentencia sea verdadera o falsa, necesitamos crear una cadena de condiciones. Para eso, R combina las dos herramientas anteriores.

if (edad >= 18){
  print("El usuario es mayor de edad.")
} else if (edad >= 16){
  print("El usuario no es mayor de edad, pero puede votar.")
} else {
  print("El usuario no es mayor de edad ni puede votar.")
}

En Python, esto se realiza con la expresión elif, que se complementa con else para indicar el caso en el cual ambas condiciones hayan sido falsas.

if edad >= 18: 
  print("El usuario es mayor de edad.")
elif edad >= 16: 
  print("El usuario no es mayor de edad, pero puede votar.")
else:
  print("El usuario no es mayor de edad ni puede votar.")

Cierre

En este post vimos las diferencias y similitudes entre R y Python para crear estructuras de control iterativas; las diferencias de sintaxis por ahora son mínimas. En el próximo post vamos a empezar a ver las estructuras de control de flujo iterativas, los blucles for y while.

Como siempre, recordá que podés suscribirte a mi blog para no perderte ninguna actualización, y si te quedó alguna consulta no dudes en contactarme. Y, si te gusta lo que hago, podés invitarme un cafecito desde Argentina o un kofi.

Macarena Quiroga
Macarena Quiroga
Lingüista/Becaria doctoral

Investigo la adquisición del lenguaje. Estudio estadística y ciencia de datos con R/Rstudio. Si te gusta lo que hago, podés invitarme un cafecito desde Argentina, o un kofi desde otros países. Suscribite a mi blog aquí.

Relacionado