Ejercicios con vectores en R

TALLER 5

Ejercicio 1

1.Calcule el valor aproximado del siguiente ejercicio:

\[\frac{0.3 \cdot 0.15}{0.3 \cdot 0.15 + 0.2 \cdot 0.8 + 0.5 \cdot 0.12} \]

Resolución:

a<- 0.3 * 0.15
b <- ((0.3 * 0.15) + (0.2 * 0.8) + (0.5 * 0.12))
resultado<- a / b
cat("El resultado es: ", resultado)
## El resultado es:  0.1698113

2.Calcule el valor aproximado del siguiente ejercicio:

\[ \frac{5^6}{6!} e^{-5}\]

Resolución:

r <- (5^6 / factorial(6)) * exp(-5)
cat("El resultado es: ", r)
## El resultado es:  0.1462228

3.Calcule el valor aproximado del siguiente ejercicio:

\[ \binom{20}{7} \cdot 0.4^7 \cdot 0.6^{13} \] Resolución:

N <- 20
n <- 7
re <- (factorial(N)/(factorial(n)*(factorial(N-n))))* (0.4^7)*(0.6^13)
cat("El resultado es: ", re)
## El resultado es:  0.1658823

Ejercicio 2

El vector alumnos representa los nombres de una serie de alumnos.

Crear el vector alumnos con 20 nombres

Primero creamos el vector con “c( )” y lo asignamos a una variable

alumnos <- c("Juan","Pedro","Ana","Mathias","Jose","Pepe","Nihga","Sebastián",
             "Josue","Said","Andrés","Salomé","Gabriel","Sara","Vivian","Camila",
             "Anabel","Sofía","Iveth","Devora")
  1. Visualizar la variable

Una vez creada la variable la visualizamos

alumnos
##  [1] "Juan"      "Pedro"     "Ana"       "Mathias"   "Jose"      "Pepe"     
##  [7] "Nihga"     "Sebastián" "Josue"     "Said"      "Andrés"    "Salomé"   
## [13] "Gabriel"   "Sara"      "Vivian"    "Camila"    "Anabel"    "Sofía"    
## [19] "Iveth"     "Devora"
  1. ¿Cuántas componentes tiene el vector alumnos?

Para esto, utilizamos la función “length( )” la cual indica el número de elementos de un vector.

Para saber el número de elementos que tiene el vector, ingresamos el nombre de la varibale en la función “length(alumnos)”

comp <- length(alumnos)
cat("El vector tiene", comp, "componentes")
## El vector tiene 20 componentes
  1. ¿En qué posiciones del vector alumnos está la letra ‘A’?

Para saber la posición de un elemento en un vector utilizamos la función “whitch ( ) pero además necesitamos saber que elementos del vector empiezan con la letra”A” tenemos que agregar una función “str_ detect( )”, para esta segunda funcion hay que instalar el paquete string “install.packages(”stringr”)”

library(stringr)
posiciones <- which(str_detect(alumnos,"A"))
cat("El vector tiene nombres con A en las posiciones", posiciones)
## El vector tiene nombres con A en las posiciones 3 11 17

Ejercicio 3

El vector notas representa la nota de un examen, de los mismos alumnos cuya lista se ha guardado en el vector alumnos y en el mismo orden.

Creamos el vector notas

notas <- round(runif(20,1,10),0)
# Round ( ), función que redondea los decimales, en este caso el "0" indica cero decimales
  1. Visualízalo en pantalla
notas
##  [1] 4 7 8 6 2 5 5 5 6 1 9 5 2 4 5 7 6 2 4 2
  1. ¿Cuántas componentes tiene?

Usamos la función “length( )”

compnots <- length(notas)
cat("El vector tiene", compnots, "componentes")
## El vector tiene 20 componentes
  1. ¿Cuánto suman todas las notas?

Para sumar los elementos numéricos de un vector usamos la función “sum( )”

sumnotas <- sum(notas)
cat("La suma de todas las notas da como resultado:", sumnotas)
## La suma de todas las notas da como resultado: 95
  1. ¿Cuál es la media aritmética de todas las notas?

Para saber la media artimética utilizamos la función “mean( )”

medianotas <- round(mean(notas),2)
cat("La media aritmetica de las notas es de:", medianotas)
## La media aritmetica de las notas es de: 4.75
  1. ¿En qué posiciones están las notas mayores de 7?

Para saber las posiciones de un vector con una condicion utilizamos el siguiente formato: which(notas > 7)

posinotas <- which(notas > 7)
cat("Las notas mayores a 7 se encuentran en las posiciones:", posinotas)
## Las notas mayores a 7 se encuentran en las posiciones: 3 11

Para ordenar elementos numéricos de un vector utilizamos la función:

sort(x) da el vector argumento x reordenado de manera creciente.

sort(x,decreasing=TRUE) lo mismo (pero decreciente).

  1. Visualiza las notas ordenadas de menor a mayor
men_may <- sort(notas)
men_may
##  [1] 1 2 2 2 2 4 4 4 5 5 5 5 5 6 6 6 7 7 8 9
  1. Visualiza las notas ordenadas de mayor a menor
may_men <- sort(notas,decreasing = TRUE)
may_men
##  [1] 9 8 7 7 6 6 6 5 5 5 5 5 4 4 4 2 2 2 2 1

Para saber los números máximos o mas altos de un vector utilizamos:

max( )

  1. ¿Cuál ha sido la nota máxima?
notmax <- max(notas)
cat("La nota máxima es:", notmax)
## La nota máxima es: 9
  1. ¿En qué posición del vector está esa nota máxima?
posmaxnot <- which(notas==notmax)
cat("La nota mas alta se encuentra en la posicion",posmaxnot)
## La nota mas alta se encuentra en la posicion 11

Ejercicio 4

Con los datos ya registrados hacer:

  1. Notas de los 10 primeros alumnos
notas10 <- notas[1:10]
print("Notas de los 10 primeros alumnos:")
## [1] "Notas de los 10 primeros alumnos:"
print(notas10)
##  [1] 4 7 8 6 2 5 5 5 6 1
  1. Suma 10 primeras notas
suma10p <- sum(notas10)
print("Suma de las notas de los 10 primeros alumnos:")
## [1] "Suma de las notas de los 10 primeros alumnos:"
print(suma10p)
## [1] 49
  1. ¿Cuántos aprobados?
aprobados <- notas >= 7
cantaprobados <- sum(aprobados)
print("Cantidad de alumnos que han aprobado:")
## [1] "Cantidad de alumnos que han aprobado:"
print(cantaprobados)
## [1] 4
  1. Porcentaje de alumnos aprobados:
totalumnos <- length(alumnos)
porcentajeap <- (cantaprobados / totalumnos) * 100
print("Porcentaje de alumnos que han aprobado:")
## [1] "Porcentaje de alumnos que han aprobado:"
cat(porcentajeap,"%")
## 20 %
  1. Notas max y min
maxima <- max(notas)
minima <- min(notas)
print("Nota máxima:")
## [1] "Nota máxima:"
print(maxima)
## [1] 9
print("Nota mínima:")
## [1] "Nota mínima:"
print(minima)
## [1] 1
  1. ¿De qué alumnos son las notas?
alumnosmaxima <- alumnos[notas == maxima]
alumnosminima <- alumnos[notas == minima]
print("Alumnos con la nota máxima:")
## [1] "Alumnos con la nota máxima:"
print(alumnosmaxima)
## [1] "Andrés"
print("Alumnos con la nota mínima:")
## [1] "Alumnos con la nota mínima:"
print(alumnosminima)
## [1] "Said"
  1. Obtener la media de las notas
media <- mean(notas[aprobados])
print("Nota media de los alumnos aprobados:")
## [1] "Nota media de los alumnos aprobados:"
print(media)
## [1] 7.75

Ejercicio 5: Creacion y Manipulacion de Vectores

  1. Crea un vector llamado vec1 que contenga los números del 1 al 10.
vec1 <- 1:10
vec1
##  [1]  1  2  3  4  5  6  7  8  9 10
  1. Extrae el tercer y sexto elemento de vec1.
tercer <- vec1[3]
sexto <- vec1[6]
cat("El tercer elemento extraido es:", tercer , "\n")
## El tercer elemento extraido es: 3
cat("El sexto elemento extraido es:", sexto , "\n")
## El sexto elemento extraido es: 6
  1. Reemplaza el quinto elemento de vec1 por el número 99.
vec1[5] <- 99
print(vec1)
##  [1]  1  2  3  4 99  6  7  8  9 10

Ejercicio 6: peraciones Aritméticas con Vectores

  1. Crea dos vectores vec2 y vec3 de longitud 5 con valores enteros aleatorios entre 1 y 20. Para crear valores enteros aleatorios podemos usar la función sample()
  • Primer vector:
vec2 <- sample(1:20, 5, T)
vec2
## [1] 11 12  9 10  3
  • Segundo vector:
vec3 <- sample(1:20, 5, T)
vec3
## [1]  7 19  8 11  4
  1. Suma los vectores vec2 y vec3, para ello se emplea la función sum()
vecres1 <- sum(vec2, vec3)
  1. Multiplica los vectores vec2 y vec3, y se usa la función prod()
vecres2 <- prod(vec2, vec3)

Visualización o impresión de los resultados:

cat("El primer vector aleatorio es: ",vec2)
## El primer vector aleatorio es:  11 12 9 10 3
cat("El segundo vector aleatorio es: ",vec3)
## El segundo vector aleatorio es:  7 19 8 11 4
cat("La suma de los vectores aleatorios es:",vecres1)
## La suma de los vectores aleatorios es: 94
cat("La multiplicación de los vectores aleatorios es:",vecres2)
## La multiplicación de los vectores aleatorios es: 1668522240

Ejercicio 7: Funciones de Resumen

  1. Crea un vector vec4 que contenga los valores 3, 5, 7, 2, 8, 10, 4, 6.
vec4 <- c(3, 5, 7, 2, 8, 10, 4, 6)
vec4
## [1]  3  5  7  2  8 10  4  6
  1. Calcula la media, la mediana y la desviación estándar de vec4.
media <- mean(vec4)
mediana <- median(vec4)
desviacion_estandar<- sd(vec4)
cat("La media del vector llamado vec4 es:", media, "\n")
## La media del vector llamado vec4 es: 5.625
cat("La mediana del vector llamado vec4 es:", mediana, "\n")
## La mediana del vector llamado vec4 es: 5.5
cat("La desviación estándar del vector llamado vec4 es:", desviacion_estandar, "\n")
## La desviación estándar del vector llamado vec4 es: 2.66927

Ejercicio 8: Filtrado de Vectores

  1. Crea un vector vec5 que contenga los números del 1 al 20.
vec5 <- round(runif(10,1,20),0)
vec5
##  [1] 17 19 18 18 13 13  4  2 12  6
  1. Filtra y crea un nuevo vector con los números de vec5 que sean mayores que 10.
vec5may <- vec5[vec5>10]
cat("Los numeros mayores a 10 son:", vec5may)
## Los numeros mayores a 10 son: 17 19 18 18 13 13 12

Ejercicio 9: Ordenación de Vectores

  1. Crear un vector 6 con los siguientes números: 12, 5, 13, 9, 2, 8, 10, 1
vec6 <- c(12, 5, 13, 9, 2, 8, 10, 1)
vec6
## [1] 12  5 13  9  2  8 10  1
  1. Ordenar de forma ascendente, para ello se utiliza la función: sort()
vec6_asc <- sort(vec6)
cat("El vector ordenado de forma ascendente: ",vec6_asc)
## El vector ordenado de forma ascendente:  1 2 5 8 9 10 12 13
  1. Ordenar de forma descendente, la misma función sort() pero ahora se aumenta en el argumento: “decreasing =” y “TRUE” para que se ordene de forma decreciente
vec6_des <- sort(vec6, decreasing = TRUE)
cat("El vector ordenado de forma descendiente: ", vec6_des)
## El vector ordenado de forma descendiente:  13 12 10 9 8 5 2 1

Ejercicio 10: Operaciones lógicas con Vectores

  1. Crear un vector 7 que contenga los valores: 7, 14, 3, 8, 15, 1, 6, 10
vec7 <- c(7, 14, 3, 8, 15, 1, 6, 10)
vec7
## [1]  7 14  3  8 15  1  6 10
  1. Crea un nuevo vector que contenga TRUE si el valor en vec7 es mayor que 5, y FALSE en caso contrario. Para que se pueda mostrar esta indicación, simplemente se escribe la condición: vector > 5 para que indique si es verdadero o falso cada elemento del vector.
vec7_n <- vec7 > 5
cat(vec7_n)
## TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE

Ejercicio 11: # Subsetting Avanzado

  1. Crea un vector vec8 con los siguientes números: 11, 2, 19, 8, 5, 12, 3, 7.
vec8 <- c(11, 2, 19, 8, 5, 12, 3, 7)
  1. Extrae los elementos de vec8 que sean múltiplos de 3.
vec8_c <- vec8[vec8 %% 3 == 0]

Impresión de los resultados:

cat("El vector original es: ")
## El vector original es:
vec8
## [1] 11  2 19  8  5 12  3  7
cat("Los elementos del vector que son múltiplos de 3 son:")
## Los elementos del vector que son múltiplos de 3 son:
vec8_c
## [1] 12  3

Ejercicio 12: Funciones de aplicación

  1. Crear un vector 9 que contenga los valores 2, 4, 6, 8, 10, 12, 14, 16. Los vectores se crean usando la función c():
vec9 <- c(2, 4, 6, 8, 10, 12, 14, 16)
vec9
## [1]  2  4  6  8 10 12 14 16
  1. Aplicar raíz cuadrada a cada elemento del vector, usando la función sqrt(), se obtiene la raíz cuadrada
vec9_raiz <- round(sqrt(vec9),4)
cat("La raíz cuadrada de cada elemento del vector es: ",vec9_raiz)
## La raíz cuadrada de cada elemento del vector es:  1.4142 2 2.4495 2.8284 3.1623 3.4641 3.7417 4

Ejercicio 13: Concatenación de vectores

  1. Crear dos vectores: vec10 y vec11, con longitud de 4 valores enteros
vec10 <- c(6, 5, 3, 0)
vec10
## [1] 6 5 3 0
vec11 <- c(21, 111, 8, 4)
vec11
## [1]  21 111   8   4
  1. Concatenar ambos vectores para obtener un tercer vector, para concatenar también se usa la función c(), seguido de los 2 vectores creados
vec12 <- c(vec10, vec11)
cat("El vector concatenado es el siguiente:", vec12)
## El vector concatenado es el siguiente: 6 5 3 0 21 111 8 4

Ejercicio 14: Eliminación de elementos

  1. Crea un vector 13 que contenga los numeros del 1 al 10, se puede hacer de dos formas, una usando seq() y la otra es con c() pero se usan los “:” para señalar desde 1 hasta 10, es decir:
vec13 <- c(1:10)
vec13
##  [1]  1  2  3  4  5  6  7  8  9 10
  1. Eliminar el cuarto y séptimo elemento del vector: Para eliminar los elementos de la cuarta y séptima posición, se puede usar -c() y para ingresar a la posición que se quiere se utlizan los corchetes
vec13_n <- vec13[-c(4,7)]
cat("El nuevo vector al eliminar los elementos: ", vec13_n)
## El nuevo vector al eliminar los elementos:  1 2 3 5 6 8 9 10