Desafío 1: Realice otros 10 ejemplos con diferentes operadores matemáticos.

Ejemplo 1: Valor absoluto de -5

absoluto = abs(-5)
absoluto
## [1] 5

Ejemplo 2: Logaritmo en base dos de 10

lg = log2(10)
lg
## [1] 3.321928

Ejemplo 3: Diferencia entre 10 y 2

dif = 10 - 2
dif
## [1] 8

Ejemplo 4: Factorial de 4

fact = factorial(4)
fact
## [1] 24

Ejemplo 5: Raiz cubica de 8

cbrt = 8^(1/3)
cbrt
## [1] 2

Ejemplo 6: Coseno de 60 grados

cosine = cos(60*pi/180)
cosine
## [1] 0.5

Ejemplo 7: Tangente de 60 grados

tangent = tan(60*pi/180)
tangent
## [1] 1.732051

Ejemplo 8: Función exponencial de 2

exponencial = exp(2)
exponencial
## [1] 7.389056

Ejemplo 9: 2 Módulo 10

modulo = 2%%10
modulo
## [1] 2

Ejemplo 10: 10 elevado a 2

tenpower = 10^2
tenpower
## [1] 100

Desafío 2: Realice ejemplos usando otros tipos de estructura de datos: elementos booleanos, factores, tablas, entre otros.

Ejemplo 1: Dataframe que muestra una lista de videojuegos, su genero correspondiente y si existe una modalidad de multijugador para el juego en cuestión.

juegos = c("Yu-Gi-Oh!", "Terraria", "Counter Strike Global Offensive", "Starcraft", "League Of Legends", "Worms", "Chrono Trigger", "Max Payne")

generos = c("Trading Card Game", "Sandbox", "First Person Shooter", "Real Time Strategy", "MOBA", "Strategy", "RPG", "Third Person Shooter")

ismultiplayer = c("Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "No")

juegosclasificados = data.frame(juegos=juegos, generos=generos, esmultijugador=ismultiplayer)

juegosclasificados
##                            juegos              generos esmultijugador
## 1                       Yu-Gi-Oh!    Trading Card Game            Yes
## 2                        Terraria              Sandbox            Yes
## 3 Counter Strike Global Offensive First Person Shooter            Yes
## 4                       Starcraft   Real Time Strategy            Yes
## 5               League Of Legends                 MOBA            Yes
## 6                           Worms             Strategy            Yes
## 7                  Chrono Trigger                  RPG             No
## 8                       Max Payne Third Person Shooter             No

Ejemplo 2: Factor de las categorias “variable” y “constante”

clasificacion <- c("V", "C", "C", "C", "V", "C", "V", "V", "C")

clasificacion <- factor(clasificacion)
clasificacion <- factor(clasificacion, levels = c("C", "V"), labels = c("Constante", "Variable"))
clasificacion
## [1] Variable  Constante Constante Constante Variable  Constante Variable 
## [8] Variable  Constante
## Levels: Constante Variable

Ejemplo 3: Un vector con strings

vector = c("aaa", "aaSa", "aaAba", "aaEEa", "asdf", "qwerty", "uiop", "asdfghjkl", "zxcvbnm", "qazwsxedcrfvtgb")
vector
##  [1] "aaa"             "aaSa"            "aaAba"           "aaEEa"          
##  [5] "asdf"            "qwerty"          "uiop"            "asdfghjkl"      
##  [9] "zxcvbnm"         "qazwsxedcrfvtgb"

Desafío 3: Construya una función que permita a un jugador jugar al piedra papel o tijeras.

Función que permite jugar al piedra papel o tijera de manera que se ingresa como argumento de la función en formato de string la elección para jugar entre las opciones “piedra”, “papel”, o “tijera”. Tras eso, el contrincante (Al cual se le referirá como “IA”) eligirá una opción al azar y dependiendo de su elección habrá una victoria, derrota o empate. Se debe notar que este juego está diseñado para jugarse solo una vez por ejecución.

jugar <- function(eleccion) {
  
  # Se genera una lista con los movimientos que utilizará el IA, también se utilizará para hacer control de la elección del jugador
  movimientos_contrincante <- list("piedra", "papel", "tijera")
  
  # Se hace una estandarización de la elección aplicando el uso de minusculas
  eleccion <- tolower(eleccion)
  
  # Se verifica que la elección sea un movimiento válido, es decir, que esta se encuentre entre papel, piedra o tijera
  if (!(eleccion %in% movimientos_contrincante)){
    print("La eleccion no es valida")
    return()
  }
  
  # Se escoje de forma aleatoria un movimiento válido para el IA
  movimiento_IA = sample(movimientos_contrincante, 1)
  
  # Se verifica si la elección del jugador y la del IA son iguales, lo cual significaría un empate
  if (movimiento_IA == eleccion){
    print("El IA ha escogido: ")
    print(toString(movimiento_IA))
    print("Empate")
  }
  
  # Se verifica el caso donde el jugador gana debido a las reglas del juego
  else if (eleccion == "piedra" & movimiento_IA == "tijera" | 
      eleccion == "papel" & movimiento_IA == "piedra" |
      eleccion == "tijera" & movimiento_IA == "papel"){
    print("El IA ha escogido: ")
    print(toString(movimiento_IA))
    print("El jugador ha ganado")
  }
  
  # Caso donde el jugador pierde
  else{
    print("El IA ha escogido: ")
    print(toString(movimiento_IA))
    print("El IA ha ganado")
  }
}

jugar("piedra")
## [1] "El IA ha escogido: "
## [1] "tijera"
## [1] "El jugador ha ganado"

Desafío 4

Para este desafío se escoge el dataset “CO2” el cual describe un experimento aplicado a seis plantas de Mississippi y seis plantas de Quebec, de las cuales se toma la medición del consumo de dioxido de carbono exponiendo a estas plantas a distintos niveles de dioxido de carbono en el ambiente. La mitad de las plantas de cada localidad fueron expuestas a un enfriamiento durante una noche de forma previa al experimento. La fuente de estos datos corresponde al articulo “The statistical analysis of ecophysiological response curves obtained from experiments involving repeated measures” publicado en 1990 por Potvin, C., Lechowicz, M. J. y Tardif, S.

Las variables que se pueden observar en este experimento corresponden a:

summary(CO2)
##      Plant             Type         Treatment       conc          uptake     
##  Qn1    : 7   Quebec     :42   nonchilled:42   Min.   :  95   Min.   : 7.70  
##  Qn2    : 7   Mississippi:42   chilled   :42   1st Qu.: 175   1st Qu.:17.90  
##  Qn3    : 7                                    Median : 350   Median :28.30  
##  Qc1    : 7                                    Mean   : 435   Mean   :27.21  
##  Qc3    : 7                                    3rd Qu.: 675   3rd Qu.:37.12  
##  Qc2    : 7                                    Max.   :1000   Max.   :45.50  
##  (Other):42

Se puede observar que al usar la función summary() en el dataset de CO2, se muestra información asociada al experimento, tal como los identificadores de las plantas, tratamientos y sus tipos correspondientes, pero además de eso se puede observar la información de la concentración de dioxido de carbono ambiental y el consumo de este tal como medidas de tendencia central junto con valores mínimos y máximos.

plot(CO2)

Al usar la función plot() en el dataset de CO2 se puede observar un conjunto de gŕaficos de dispersión para cada variable, se puede notar gracias a estos gráficos la existencia de las variables continuas.