Operaciones

Operaciones aritméticas

# Suma
suma1 <- 20+36
print(suma1)
## [1] 56
suma2 <- 51+68
suma3 <- 100+25

# Potenciación
potencia <- 2^2

Operaciones lógicas

Las variables lógicas tienen solo dos estados

logi <- TRUE

#Operador AND
TRUE & TRUE
## [1] TRUE
TRUE & FALSE
## [1] FALSE
FALSE & FALSE
## [1] FALSE
# Operador OR
TRUE | TRUE
## [1] TRUE
TRUE || FALSE
## [1] TRUE
FALSE | FALSE
## [1] FALSE
# Operador NOT
!logi
## [1] FALSE
# Comparaciones

5==3
## [1] FALSE
5!=3
## [1] TRUE
5>3
## [1] TRUE
5<=3
## [1] FALSE
5<3
## [1] FALSE
5>=3
## [1] TRUE
# Estructuras de control

## if, else if, else

x <- 10

# Determinar si un número es positivo, negativo o cero
if (x>0){
  print("x es positivo")
} else if (x==0){
   print("x es cero") 
} else {
      print("x es negativo")
}
## [1] "x es positivo"
# Estructura for
for(i in 1:5){
  print (i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
vec <- c("a", "b", "c")
length(vec)
## [1] 3
for(val in vec){
  print(paste("El elemento del vector es",val))
}
## [1] "El elemento del vector es a"
## [1] "El elemento del vector es b"
## [1] "El elemento del vector es c"
# Acceder al elemento del vector que está en la posición 1 entre llaves
vec[1]
## [1] "a"
for(val in vec){
  print(paste("El elemento del vector es",val))
}
## [1] "El elemento del vector es a"
## [1] "El elemento del vector es b"
## [1] "El elemento del vector es c"
# for para iterar o recorrer los índices del vector
# El elemento en la posición 1 es

for(i in 1:length(vec)){
  print(paste("El elemento en la posición", i, "es", vec[i]))
}
## [1] "El elemento en la posición 1 es a"
## [1] "El elemento en la posición 2 es b"
## [1] "El elemento en la posición 3 es c"
# Estructura de control while

i <- 5

while(i<=5){
  print(i)
  i <- i+1
}
## [1] 5
# Estructura de control switch

value <- 3

result <- switch(value,"1"="one",
                 "2"="two",
                 "3"="three",
                 "invalid")
print(result)
## [1] "three"
# Definir una función

# La función es evaluar número
evaluar_num <- function(x){
  if (x>0){
   print("x es positivo")
  } else if (x==0){
    print("x es cero") 
  } else {
      print("x es negativo")
}
}

evaluar_num(3)
## [1] "x es positivo"
# Función que sume dos números

f_suma <- function (x,y){
  return (x+y)
}

f_suma(3,5)
## [1] 8

ACTIVIDAD

Taller estructuras de control

# Actividad if, else if, else 

## PUNTO 1

## Código que verifica si una persona es menor de edad, mayor de edad o un adulto mayor
## basándose en su edad y luego imprima un mensaje correspondiente
## menor de edad <18, adulto mayor >=65)

evaluar_edad <- function(e){
  if (e<18){
   print("es menor de edad")
  } else if (e==18){
    print("es mayor de edad") 
  } else if (e<65){
    print("es mayor de edad") 
  } else {
      print("es adulto mayor")
}
}

evaluar_edad(18)
## [1] "es mayor de edad"
# Actividad if, else if, else 

# PUNTO 2

## Escribe un código que verifique la temperatura y determine si está "fría" (<10 °C),
## "templada" (10 °C a 25 °C), o "caliente" (>25 °C) y luego imprima el mensaje.

evaluar_temp <- function(t){
  if (t<10){
   print("la temperatura es fría")
  } else if (t>=10 && t<=25){
    print("la temperatura es templada") 
  } else {
      print("la temperatura es caliente")
}
}

evaluar_temp(10)
## [1] "la temperatura es templada"
evaluar_temp(-2)
## [1] "la temperatura es fría"
evaluar_temp(20)
## [1] "la temperatura es templada"
evaluar_temp(25)
## [1] "la temperatura es templada"
evaluar_temp(41)
## [1] "la temperatura es caliente"
# Actividad for

## PUNTO 1

## Escribe un código que imprima cada letra de un vector de caracteres
## Este es un bucle para iterar sobre cada letra de cada palabra del vector v_char

v_char <- c("Hola", "a", "todos", "en", "R")

for (palabra in v_char) {
   for (letra in strsplit(palabra, "")[[1]]) {
       cat(letra, " ")
  }
}
## H  o  l  a  a  t  o  d  o  s  e  n  R
# Actividad for

## PUNTO 2

## Escribe un código que recorra un vector de números y calcula la
## suma de todos los números en el vector
## Este es un bucle para iterar sobre cada número del vector v_num

v_num <- c(10, 25, 39, 41, 53)

suma_v <- 0
    for (numero in v_num) {
    suma_v <- suma_v + numero
}

print(suma_v)
## [1] 168
# Actividad for

## PUNTO 3

## Escribe un código que recorra un vector de nombres y salude a cada
##persona imprimiendo "¡Hello, [nombre]!"

v_nombre <- c("Andrea", "Olga", "Luciana")

for (i in 1:length(v_nombre)) {
    print (paste ("Hello,", v_nombre[i]))
  
}
## [1] "Hello, Andrea"
## [1] "Hello, Olga"
## [1] "Hello, Luciana"
# Actividad while

##PUNTO 1

## Escribe un código que use un bucle while para contar del 1 al 10 e
## imprima cada número. Si el número es mayor que 5, imprime un mensaje 
## adicional indicando que el número es mayor que 5.

## Iniciar un contador
contar <- 1

## Contar del 1 al 10
while (contar <= 10) {
    cat("Número=", contar)
  
  if (contar > 5) {
    cat(" ¡Este número es mayor que 5!\n")
  } else {
    cat("\n")
  }
  
  contar <- contar + 1
}
## Número= 1
## Número= 2
## Número= 3
## Número= 4
## Número= 5
## Número= 6 ¡Este número es mayor que 5!
## Número= 7 ¡Este número es mayor que 5!
## Número= 8 ¡Este número es mayor que 5!
## Número= 9 ¡Este número es mayor que 5!
## Número= 10 ¡Este número es mayor que 5!
# Actividad while

##PUNTO 2

## Escribe un código que use un bucle while para sumar los números del 
## 1 al 100 e imprima el resultado

# Las variables
contar2 <- 1
suma_v <- 0

while (contar2 <= 100) {
  suma_v <- suma_v + contar2
  contar2 <- contar2 + 1
}

# Imprimir la suma
cat("La suma es igual a:", suma_v, "\n")
## La suma es igual a: 5050
# Actividad while

## PUNTO 3

## Escribe un código que use un bucle while para restar 1 de un número n
## dado hasta que n sea 0 e imprima el valor de n en cada iteración

evaluar_suma <- function(n){
while (n > 0) {
  cat("n =", n, "\n")
  n <- n - 1
  }
}

evaluar_suma(5)
## n = 5 
## n = 4 
## n = 3 
## n = 2 
## n = 1
# Actividad switch

## PUNTO 1

## Escribe un código que use la estructura switch para imprimir el 
## nombre de un día de la semana basado en un número del 1 al 7

print_dia <- function(num_dia) {
  switch(num_dia,
         "1" = cat("Lunes\n"),
         "2" = cat("Martes\n"),
         "3" = cat("Miércoles\n"),
         "4" = cat("jueves\n"),
         "5" = cat("Viernes\n"),
         "6" = cat("Sábado\n"),
         "7" = cat("Domingo\n"),
         cat("Número inválido para el día\n")
  )
}

print_dia(1)
## Lunes
print_dia(5)
## Viernes
print_dia(8)
## Número inválido para el día
# Actividad switch

## PUNTO 2

## Escribe un código que use la estructura switch para determinar el tipo
## de una variable dada (character, numeric, logical, etc) e imprima un mensaje

det_tipo <- function(vartipo) {
  tipo <- typeof(vartipo)
  texto <- switch(tipo,
                  "character" = "La variable es de tipo caracter.",  
                  "integer" = "La variable es de tipo entero.",
                  "double" = "La variable es de tipo numéro decimal.",
                  "logical" = "La variable es de tipo lógico.")
  cat(texto, "\n")
}

det_tipo("Mi nombre es Andrea Zabala Q.")
## La variable es de tipo caracter.
det_tipo(18L) ## Número entero debe llevar el sufijo L
## La variable es de tipo entero.
det_tipo(2.587496)
## La variable es de tipo numéro decimal.
det_tipo(FALSE)
## La variable es de tipo lógico.
det_tipo(TRUE)
## La variable es de tipo lógico.
# Actividad switch

## PUNTO 3

## Escribe un código que use la estructura switch para imprimir el 
## nombre de un mes basado en el número del 1 al 12

print_mes <- function(num_mes) {
  switch(num_mes,
         "1" = cat("Enero\n"),
         "2" = cat("Febrero\n"),
         "3" = cat("Marzo\n"),
         "4" = cat("Abril\n"),
         "5" = cat("Mayo\n"),
         "6" = cat("Junio\n"),
         "7" = cat("Julio\n"),
         "8" = cat("Agosto\n"),
         "9" = cat("Septiembre\n"),
         "10" = cat("Octubre\n"),
         "11" = cat("Noviembre\n"),
         "12" = cat("Diciembre\n"),
         cat("Número inválido para el mes\n")
  )
}

print_mes(1)
## Enero
print_mes(6)
## Junio
print_mes(12)
## Diciembre
print_mes(15)