2.10 Un poco sobre programación

2.10.1 Condicionales

La instrucción if, else, nos permite ejecutar un bloque de código cuando alguna condición se cumple y ejecutar un bloque distinto (o no hacer ninguna ejecución) si la condición no se cumple.

imprimir_clima <- function(temp) {
  if (temp > 27) {
    print("Hará calor")
  } else if (temp < 17) {
     print("Hará frío")
  } else {
     print("Estará tempado")
  }
}
  
imprimir_clima(35)
## [1] "Hará calor"
imprimir_clima(22)
## [1] "Estará tempado"
imprimir_clima(10)
## [1] "Hará frío"

Además, también existe una función vectorizada que nos permite evaluar la condición sobre un vector. Por ejemplo, para obtener los números divisibles entre 0 o entre 2 en una muestra.

nums <- sample(1:100, 30)
ifelse(nums %% 7 == 0 | nums %% 2 == 0 , "divisible", "no divisible")
##  [1] "no divisible" "no divisible" "divisible"    "divisible"    "divisible"   
##  [6] "divisible"    "divisible"    "divisible"    "divisible"    "divisible"   
## [11] "no divisible" "no divisible" "no divisible" "no divisible" "no divisible"
## [16] "divisible"    "divisible"    "no divisible" "divisible"    "divisible"   
## [21] "divisible"    "no divisible" "divisible"    "divisible"    "divisible"   
## [26] "divisible"    "no divisible" "divisible"    "divisible"    "no divisible"

2.10.2 Ciclos

Los ciclos son nos permiten ejecutar tareas que tienen que repetirse un número específico de veces o hasta que alguna condición ocurra. Estas estructuras son muy comunes en todos los lenguajes de programación. En R existen tres tipos de ciclos: for, while y repeat.

Loops are one of the staples of all programming languages, not just R, and can be a powerful tool (although in our opinion, used far too frequently when writing R code). [4]

¿Por qué? Como ya dijimos, a diferencia de otros lenguajes de programación, en R las operaciones están vectorizadas, por lo tanto será muy inusual que tengamos que recorrer un arreglo o escribir un ciclo para realizar operaciones en los dataframes.

Los ciclos for pueden recorrer un vector de cualquier tipo. La variable que elegimos tomará uno a uno los valores dentro del vector.

dias <- c("lu", "ma", "mi", "ju", "vi", "sa", "do")

for(d in dias) {
  print(paste0("Hoy es: ", d))
}
## [1] "Hoy es: lu"
## [1] "Hoy es: ma"
## [1] "Hoy es: mi"
## [1] "Hoy es: ju"
## [1] "Hoy es: vi"
## [1] "Hoy es: sa"
## [1] "Hoy es: do"
for(num in seq(2, 20, 2)) {
  print(num*2)
}
## [1] 4
## [1] 8
## [1] 12
## [1] 16
## [1] 20
## [1] 24
## [1] 28
## [1] 32
## [1] 36
## [1] 40

El ciclo while requiere que se cumpla una condición lófica para su ejecución, por lo que podemos utilizarlo cuando no conocemos el número exacto de iteraciones que tienen que tienen que realizarse. La condición debe regresar un valor lógico, es decir, tiene que ser evaluada a TRUE o FALSE

sum <- -4
while(sum < 0) {
 num <- abs(rnorm(1))
 sum <- sum + num
 print(sum)
}
## [1] -3.56399
## [1] -3.487738
## [1] -2.147066
## [1] -1.124417
## [1] -0.7806404
## [1] 0.9799463

Referencias

[4]
A. Douglas, D. Roos, F. Mancini, A. Couto, and D. Lusseau, An introduction to r. 2022. Available: https://intro2r.com/