Desafio 1

Estos son otros operadores matemáticos posibles de utilizar dentro de R:

v1 <- -4
abs(v1)
## [1] 4
v2 <- 4
abs(v2)
## [1] 4
v1 <- 2.5
ceiling(v1)
## [1] 3
v1 <- 2.5
floor(v1)
## [1] 2
v1 <- 2
exp(v1)
## [1] 7.389056
v1 <- c(2.1,4.3,6.8)
trunc(v1)
## [1] 2 4 6
cos(pi/4)
## [1] 0.7071068
tan(pi/4)
## [1] 1
factorial(5)
## [1] 120
v1 <- c(1,2,3,4,5,6)
mean(v1)
## [1] 3.5
v1 <- c(1,2,3,4,5,6)
sd(v1)
## [1] 1.870829

Desafio 2

Arrays

Los arrays en R son estructuras de almacenamiento de datos en 2 o más dimensiones. Esto quiere decir que utiliza matrices para almacenar datos en distintos niveles de estas. Crear un array (2,3,3) genera 3 matrices de 2x3. Además es posible entregarle un nombre a las filas, columnas y matrices que se generan dentro del array, almacenando estos nombres en 3 vectores distintos y entregandolos como lista.

Por ejemplo:

elementos <- c(1,2,3,4,5,6,7,8)
dimension <- c(2,2,2)
columnas <- c('col1','col2')
filas <- c('fila1','fila2')
matrices <- c('matriz1','matriz1')
A = array(elementos, dim = dimension, dimnames = list(filas,columnas,matrices))
A
## , , matriz1
## 
##       col1 col2
## fila1    1    3
## fila2    2    4
## 
## , , matriz1
## 
##       col1 col2
## fila1    5    7
## fila2    6    8

Es posible obtener una matriz específica del array con:

A[,,1]
##       col1 col2
## fila1    1    3
## fila2    2    4

Así como obtener una columna, una fila o un elemento específico del array:

A[,2,1]
## fila1 fila2 
##     3     4
A[1,,1]
## col1 col2 
##    1    3
A[1,2,1]
## [1] 3

Matrices Booleanas

No solo se pueden realizar matrices con valores en palabras o números, sino que se pueden utilizar con valores booleanos:

vector <- c(TRUE, FALSE, FALSE, TRUE)
boolmatrix <- matrix(vector, ncol=2, nrow=2)
boolmatrix
##       [,1]  [,2]
## [1,]  TRUE FALSE
## [2,] FALSE  TRUE

En estas podemos realizar las mismas operaciones que en una matriz común, pero los valores que esta variarán dependiendo de la operación utilizada.

boolmatrix*boolmatrix
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1
det(boolmatrix)
## [1] 1
solve(boolmatrix)
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1
diag(boolmatrix)
## [1] TRUE TRUE

Como se puede observar, los valores booleanos se consideran valores 0 y 1 para FALSE y TRUE respectivamente

Desafio Piedra, Papel o Tijeras

mano <- c('piedra','papel','tijera')

cachipum <- function(player){
  bot <- sample(mano,1)
  if(player=='piedra'){
    if(bot=='piedra'){
      return('Piedra y Piedra, Empate')
    }
    if(bot=='papel'){
      return('Piedra y Papel, Perdiste')
    }
    if(bot=='tijera'){
      return('Piedra y Tijeras, Ganaste')
    }
  }
  if(player=='papel'){
    if(bot=='piedra'){
      return('Papel y Piedra, Ganaste')
    }
    if(bot=='papel'){
      return('Papel y Papel, Empate')
    }
    if(bot=='tijera'){
      return('Papel y Tijera, Perdiste')
    }
  }
  if(player=='tijera'){
    if(bot=='piedra'){
      return('Tijera y Piedr, Perdiste')
    }
    if(bot=='papel'){
      return('Tijera y Papel, Ganaste')
    }
    if(bot=='tijera'){
      return('Tijera y Tijera, Empate')
    }
  }
}

Este código puede realizar un juego de piedra, papel y tijeras contra una computadora. Por ejemplo:

cachipum('piedra')
## [1] "Piedra y Papel, Perdiste"

Así como también se puede jugar otra mano, como:

cachipum('papel')
## [1] "Papel y Papel, Empate"

Donde nos enfrentaremos a una jugada aleatoria todo el tiempo.

Desafio 4

Para este desafío se utilizará la base de datos ‘Quakes’. Este conjunto de datos almacena información sobre distintos eventos sísmicos ocurridos cercanos a la isla de Fiji, a partir del año 1964. Estos eventos poseen 5 variables distintas. La latitud y longitud que indican la ubicación del suceso, la profundidad con que se detectó la fuente del sismo, la magnitud en escala de Richter y la cantidad de estaciones que reportaron el suceso.

Este conjunto de datos debe haber sido utilizado para tener un conocimiento de las actividades sísmicas en la zona, intentando predecir la situación para eventos futuros, los valores más posibles de magnitud, así como los lugares y momentos en que estos ocurran.

Los valores que pueden tomar las distintas variables son:

Al ejecutar la función summary aparecen los siguientes datos:

##       lat              long           depth            mag      
##  Min.   :-38.59   Min.   :165.7   Min.   : 40.0   Min.   :4.00  
##  1st Qu.:-23.47   1st Qu.:179.6   1st Qu.: 99.0   1st Qu.:4.30  
##  Median :-20.30   Median :181.4   Median :247.0   Median :4.60  
##  Mean   :-20.64   Mean   :179.5   Mean   :311.4   Mean   :4.62  
##  3rd Qu.:-17.64   3rd Qu.:183.2   3rd Qu.:543.0   3rd Qu.:4.90  
##  Max.   :-10.72   Max.   :188.1   Max.   :680.0   Max.   :6.40  
##     stations     
##  Min.   : 10.00  
##  1st Qu.: 18.00  
##  Median : 27.00  
##  Mean   : 33.42  
##  3rd Qu.: 42.00  
##  Max.   :132.00

Podemos observar que se nos dan varios datos para cada columna que poseen los datos:

Al ejecutar la función plot, se puede observar el siguiente gráfico:

Al utilizar esta función se puede observar toda la familia de gráficas posibles de realizar con los datos de la tabla, intersectando las columnas entre sí. Por ejemplo se puede observar en la parte superior las gráficas Longitud X Latitud, Profundidad X Latitud, Magnitud X Latitud y Estaciones X Latitud. De la misma manera se pueden nombrar todas las demás tablas, incluyendo las tablas inversas de estas.