Desafío 1

Operación 1: Valor absoluto

v1=140
v2=203
op1 = abs(v1-v2)
op1
## [1] 63

Operación 2: Logartimo de array con exponencial

x = exp(1:10)
cat("Array x: [", x, "]\n")
## Array x: [ 2.718282 7.389056 20.08554 54.59815 148.4132 403.4288 1096.633 2980.958 8103.084 22026.47 ]
op2= log(x)
cat("Array x con log aplicado: [", op2, "]\n")
## Array x con log aplicado: [ 1 2 3 4 5 6 7 8 9 10 ]

Operación 3: Máximo número

x=sample(1:100, 10)
x
##  [1] 32 65 12 99  3 43 89 17 70 91
max(x)
## [1] 99

Operación 4: Mediana de un array

x=sample(1:100, 10)
x
##  [1] 66 52 19 28 10 55 59 49 78 14
median(x)
## [1] 50.5

Operación 5: Suma de todos los datos de un array

x=sample(1:10, 10)
x
##  [1]  1  9  7 10  5  4  6  2  3  8
sum(x)
## [1] 55

Operación 6: Promedio de un array

x=sample(1:100, 10)
x
##  [1] 82 81  5 24  7 18 40 46  4 12
cat("Promedio de array x: ",sample(ave(x),1))
## Promedio de array x:  31.9

Operación 7: Multiplicación de matrices

x=matrix(sample(1:100, 9), nrow = 3, ncol= 3)
y= 1:3
cat("Matriz x: ", "\n")
## Matriz x:
print(x)
##      [,1] [,2] [,3]
## [1,]   77   39   60
## [2,]   63   38   72
## [3,]   21   93    1
cat("Matriz y: ", "\n")
## Matriz y:
print(y)
## [1] 1 2 3
cat("Matriz x*y: ", "\n")
## Matriz x*y:
print(x%*%y)
##      [,1]
## [1,]  335
## [2,]  355
## [3,]  210

Operación 8: Encontrar grado de Coseno

x=sample(cos(1:180), 10)
x
##  [1] -0.04866361 -0.46382887  0.98870462 -0.14550003  0.37550960  0.11918014
##  [7]  0.54030231  0.49487222 -0.87968859 -0.75968791
acos(x)*180/pi
##  [1]  92.789321 117.634455   8.619811  98.366236  67.944187  83.155212
##  [7]  57.295780  60.338675 151.604821 139.436693

Operación 9: Derivada simple

D(expression(x^3), "x")
## 3 * x^2

Operación 10: Derivada compleja

D(expression(log(1/x)-exp(cos(sin(2*x)+3))), "x")
## -(1/x^2/(1/x) - exp(cos(sin(2 * x) + 3)) * (sin(sin(2 * x) + 
##     3) * (cos(2 * x) * 2)))

Desafío 2

Hay varias formas de representar y ordenar datos en R, una de las más completas siendo el data frame visto como ejemplo. Aún así hay estructuras de datos simples que son usadas constantemente para ordenar datos de cierta forma y lograr organizarlos en conjunto con alguna estructura más complicada.

Por ejemplo tenemos los vectores, los cuales pueden ser formados de muchas maneras, como secuencias:

seq = 1:11
seq
##  [1]  1  2  3  4  5  6  7  8  9 10 11

Estas secuencias empezarán a avanzar dentro de un rango dependiendo de los parámetros que pongamos:

seq2 = seq(from = 20, to = 10, by = -0.5)
seq2
##  [1] 20.0 19.5 19.0 18.5 18.0 17.5 17.0 16.5 16.0 15.5 15.0 14.5 14.0 13.5 13.0
## [16] 12.5 12.0 11.5 11.0 10.5 10.0

Los vectores también pueden ser formados con elementos booleanos:

x = c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
x
## [1]  TRUE FALSE  TRUE  TRUE FALSE  TRUE

También están las tablas las cuales sirven para contar todas las veces que los datos se repiten:

colores = c("Rojo", "Azul", "Verde", "Amarillo", "Morado", "Naranjo")
peso = c(2,1,1,5,4,3)
mapeo_colores = sort(table(sample(colores, 100, replace = TRUE, prob = peso)), decreasing = TRUE)
mapeo_colores
## 
## Amarillo   Morado  Naranjo     Rojo     Azul    Verde 
##       31       30       17       13        5        4

Desafío 3

Para crear un juego de kachipum se debe crear una función la cual reciba la elección del jugador, donde se hará una elección al azar entre las 3 posibilidades de lo que el adversario puede elegir y se compararán para ver quien gana.

kachipum = function(eleccion){
  elecciones = c("piedra", "papel", "tijera")
  adversario = sample(elecciones, 1)
  cat("Elejiste", eleccion, "\n")
  cat("Computador eligió", adversario, "\n")
  if (eleccion == adversario){
    resultado = "Empate"
  }
  else if (
    (eleccion == "piedra" && adversario == "tijera") || (eleccion == "papel" && adversario == "piedra") || (eleccion == "tijera" && adversario == "papel")
  ){
    resultado = "Ganaste"
  }
  else {
    resultado = "Computador gana"
  }
  
  cat("•Resultado:", resultado, "\n")
}

input = readline(prompt = "Elije 'piedra'. 'papel' o 'tijera':")
## Elije 'piedra'. 'papel' o 'tijera':
kachipum(input)
## Elejiste  
## Computador eligió tijera 
## •Resultado: Computador gana

Debido a que esta función solo funciona correctamente interactuando desde la consola para darle el input a la función, no es posible jugarlo desde la página. No obstante el código funciona sin problemas en RStudio y aún se puede ver el output de la función donde el jugador pierde por no darle un input a la función.

Desafío 4

Para este desafío ocuparemos el dataset “HairEyeColor” correspondiente a datos sobre color de pelo y ojos de un grupo de estudiantes.

El set de datos contiene información de una encuesta a 592 estudiantes de estadística de la Universidad de Delawere sobre el color de sus ojos y cabello, realizada en el año 1974.

Esta información podría ser usada para observar cosas simples, como cual es el color de pelo más prominente o que color de ojos es más raro. Al haber más de una variable, podríamos revisar si alguna de estas influye en las otras, por ejemplo si alguna combinacion de color de ojos y pelo es encontrado más veces en hombres que en mujeres o si el color de ojos verde se encuentra más en personas con un color de pelo específico.

El dataset tiene tres variables, El Color de Pelo con los valores Negro, Café, Rojo y Rubio. Color de Ojos con Café, Azul, Café claro y Verde. Y por último el Sexo del estudiante, Masculino o Femenino. Todas estas variables están refiriéndose a las características de alguien, por lo que todas estas variables corresponden a variables cualitativas nominales ya que sus valores no tienen una jerarquía o un orden. La única diferencia es que el sexo es una variable cualitativa dicotómica y los ojos y pelo son cualitativas politómicas.

summary(HairEyeColor)
## Number of cases in table: 592 
## Number of factors: 3 
## Test for independence of all factors:
##  Chisq = 164.92, df = 24, p-value = 5.321e-23
##  Chi-squared approximation may be incorrect

Al aplicar la función summary() en el dataset nos entrega el número de casos, que son la cantidad de estudiantes, la cantidad de variables, que son ojos, pelo y sexo, y un test verificando la independencia entre las variables y si estas guardan alguna relación entre si. El test muestra un Chi al cuadrado muy alto, lo que se podría significar que las variables no son independientes entre si. Los grados de libertad son 24 ya que hay 24 posibles combinaciones entre nuestras variables cualitativas y por último el valor p es la probabilidad de que nuestros datos hayan logrado dar un patrón así de específico en el caso de que las variables no tuvieran relación, el cual es casi cero. Aun así la cantidad de muestras podría ser muy baja para que el test sea preciso, por lo que nos avisa que la aproximación podría estar equivocada.

plot(HairEyeColor)

Con esto hemos podido graficar los datos. Esto nos ayuda a organizar visualmente los datos para así verlos de mejor manera y destacar las relaciones entre las variables, como por ejemplo ver que el pelo café es el más común de todos, o que hay una correspondencia marcada entre tener el cabello rubio y los ojos azules al igual que el cabello negro y los ojos cafés.