set.seed(65)
c = sample(1:5, size = 5, replace = TRUE)
vector_logico <- duplicated(c) | duplicated(c, fromLast = TRUE)
c
vector_logico
## [1] 3 2 4 1 1
## [1] FALSE FALSE FALSE TRUE TRUEEJERCICIOS MODULO 1
Ejercicios
Resolver los siguientes ejercicios de práctica
Vectores
- Crear un vector numérico con valores del 1 al 10.
- Crear un vector de caracteres con nombres de colores.
- Sumar dos vectores numéricos elemento por elemento.
- Calcular el producto escalar de dos vectores numéricos.
- Calcular la media de un vector numérico.
- Calcular la mediana de un vector numérico.
- Encontrar el valor máximo y mínimo de un vector numérico.
- Crear un vector booleano que identifique los números pares en un vector numérico.
- Crear un vector de fechas para una semana completa.
- Crear un vector numérico con números aleatorios.
- Ordenar un vector numérico de forma ascendente.
- Ordenar un vector numérico de forma descendente.
- Concatenar dos vectores numéricos.
- Reemplazar los valores negativos de un vector numérico por ceros.
- Calcular la suma acumulada de un vector numérico.
- Multiplicar cada elemento de un vector numérico por un escalar.
- Calcular la distancia euclidiana entre dos vectores numéricos.
- Encontrar los índices de los elementos mayores que cierto valor en un vector numérico.
- Crear un vector lógico que identifique los valores duplicados en un vector 1. numérico.
- Calcular la longitud de un vector.
Matrices
- Crear una matriz 3x3 con valores del 1 al 9.
- Calcular la suma de dos matrices.
- Calcular la resta de dos matrices.
- Calcular el producto de dos matrices.
- Calcular el determinante de una matriz cuadrada.
- Calcular la matriz inversa de una matriz cuadrada.
- Transponer una matriz.
- Calcular la media de cada columna de una matriz.
- Calcular la suma de cada fila de una matriz.
- Calcular el producto punto entre dos filas de una matriz.
- Calcular la suma de cada columna de una matriz.
- Extraer la diagonal de una matriz.
- Cambiar el nombre de las filas y columnas de una matriz.
- Concatenar dos matrices por filas.
- Concatenar dos matrices por columnas.
- Reemplazar los valores negativos de una matriz por ceros.
- Calcular la matriz de covarianza de una matriz de datos.
- Multiplicar cada elemento de una matriz por un escalar.
- Encontrar el valor máximo y mínimo de una matriz.
Operaciones adicionales
- Resolver un sistema de ecuaciones lineales representado por una matriz.
- Calcular la proyección ortogonal de un vector sobre otro.
- Calcular el rango de una matriz.
- Calcular la traza de una matriz.
- Calcular la matriz identidad de tamaño n.
- Calcular la matriz diagonal a partir de un vector.
- Calcular la matriz de correlación a partir de una matriz de datos.
- Resolver un sistema de ecuaciones lineales sobredeterminado.
- Calcular la matriz de covarianza a partir de una matriz de datos.
- Resolver un problema de aplicación que involucre vectores y matrices.
Solución
Resolver los siguientes ejercicios de práctica
Vectores
Crear un vector numérico con valores del 1 al 10.
- Opción 1:
c(1,2,3,4,5,6,7,8,9,10)[1] 1 2 3 4 5 6 7 8 9 10
- Opción 2:
1:10[1] 1 2 3 4 5 6 7 8 9 10
- Opción 3:
seq(1,10)[1] 1 2 3 4 5 6 7 8 9 10
Crear un vector de caracteres con nombres de colores.
c("Azul","Negro","gris","verde","naranja","rosa","rojo")[1] “Azul” “Negro” “gris” “verde” “naranja” “rosa” “rojo”
Sumar dos vectores numéricos elemento por elemento.
V1 = 1:10
V2 = 11:20
V3 = V1 + V2El vector 1 contiene los valores \(V_1 =\) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
El vector 2 contiene los valores \(V_2 =\) 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Al sumar los valores de cada vector obtenemos \(V_3 =\) 12, 14, 16, 18, 20, 22, 24, 26, 28, 30
Calcular el producto escalar de dos vectores numéricos.
PE= V1 %*% V2Al realizar el producto escalar de los vectores del punto anterior \(V_1\) y \(V_2\), el resultado es: \(V_1 \cdot V_2=\) 935
Calcular la media de un vector numérico.
med = mean(V1)Para los valores del vector \(V_1 =\) la media de sus valores es: 5.5
Calcular la mediana de un vector numérico.
mediana=median(V2)Para los valores del vector \(V_2 =\) la mediana de sus valores es: 15.5
Encontrar el valor máximo y mínimo de un vector numérico.
set.seed(123)
x<-sample(1:50, size = 10, replace = FALSE)
maximo = max(x)
minimo = min(x)Para un vector con \(10\) valores aleatorios entre \(1\) y \(50\), el cual contiene los valores \(x = [\) 31, 15, 14, 3, 42, 43, 37, 48, 25, 26 \(]\) el número máximo es: 48 y el número mínimo del mismo vector es: 3
Crear un vector booleano que identifique los números pares en un vector numérico.
pares = x%%2==0Usando los mismos valores del vector \(x =[\) 31, 15, 14, 3, 42, 43, 37, 48, 25, 26 \(]\) al resolver el ejercicio obtenemos el vector \(pares = [\) FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE \(]\)
Crear un vector de fechas para una semana completa.
inicio = dmy("19/02/2024")
fin = inicio + days(6)
semana = seq(inicio,fin,by="day")Para resolver este ejercicio es necesario instalar y activar el paquete lubridate, se debe escribir la fecha de inicio y la guardamos en \(inicio =\) 2024-02-19 y a esta fecha sumarle \(6\) días para obtener el día final de la semana o la fecha que está una semana despues de la fecha inicial \(fin\) 2024-02-25, finalmente se genera el vector \(semana\) con los valores: [\(2024-02-19, 2024-02-20, 2024-02-21, 2024-02-22, 2024-02-23, 2024-02-24, 2024-02-25\)]
Crear un vector numérico con números aleatorios.
set.seed(123)
x<-sample(1:50, size = 10, replace = FALSE)Podemos utilizar el mismo código para obtener el vector con números aleatorios \(x =\) \([\) \(31, 15, 14, 3, 42, 43, 37, 48, 25, 26\) \(]\)
Ordenar un vector numérico de forma ascendente.
sort(x)[1] 3 14 15 25 26 31 37 42 43 48
Ordenar un vector numérico de forma descendente.
sort(x, decreasing = TRUE)[1] 48 43 42 37 31 26 25 15 14 3
Concatenar dos vectores numéricos.
set.seed(35)
y = sample(-50:50, size = 10, replace = TRUE)
z = sample(0:100, size = 10, replace = TRUE)
s = c(y,z)Con el código anterior se generan dos vectores con \(10\) valores aleatorios siendo: \[y=[ 23, 19, -43, 14, -44, -40, -37, 50, -33, 47 ]\] \[z=[ 31, 72, 88, 26, 84, 82, 13, 4, 5, 6 ]\] al concatenarlos con el código s=c(y,z) obtenemos el siguiente vector: \[s = [23, 19, -43, 14, -44, -40, -37, 50, -33, 47, 31, 72, 88, 26, 84, 82, 13, 4, 5, 6]\]
Reemplazar los valores negativos de un vector numérico por ceros.
cero = ifelse(y<0,0,y)El código anterior genera un nuevo vector basandose en el vector \(y\), pero los valores negativos de \(y\) se remplazaron por \(0\) obteniendo el siguiente vector \[y=[23, 19, -43, 14, -44, -40, -37, 50, -33, 47]\] \[cero=[23, 19, 0, 14, 0, 0, 0, 50, 0, 47]\]
Calcular la suma acumulada de un vector numérico.
valores = c(5:20)
suma = cumsum(valores)Del vector \(valores = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\) la suma de sus valores es: \(suma =[5, 11, 18, 26, 35, 45, 56, 68, 81, 95, 110, 126, 143, 161, 180, 200]\), el último valor de este vector representa la suma acumulada de todos los valores
Multiplicar cada elemento de un vector numérico por un escalar.
k = 3
valores_mult = k*valoresUtilizando el mismo vector del punto anterior \(valores =[ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\) y la constante \(k =3\), al multiplicar el vector por el escalar se obtiene el siguiente vector \(v_k = [15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60]\)
Calcular la distancia euclidiana entre dos vectores numéricos.
La distancia euclidiana entre dos vectores numéricos la define la ecuación 1: \[d_E (P,Q) = \sqrt{\left( p_1-q_1 \right)^2 + \left(p_2 - q_2 \right)^2+...\left( p_n-q_n \right)^2} = \sqrt{\varSigma_{i=1}^{n}\left( p_i-q_i \right)^2}\]
set.seed(61)
a = sample(1:100, size = 10, replace = TRUE)
b = sample(1:100, size = 10, replace = TRUE)
d = sqrt ( sum ((a - b) ^ 2))Para los vectores \(a\) y \(b\) la distancia euclidiana es: \(147.543214\) \[a=[12, 71, 23, 42, 20, 98, 75, 97, 4, 89]\] \[b=[96, 67, 80, 78, 40, 31, 64, 27, 15, 78]\]
Encontrar los índices de los elementos mayores que cierto valor en un vector numérico.
numero = 50
set.seed(61)
c = sample(1:100, size = 5, replace = TRUE)
indice = which(c > numero)
c[1] 12 71 23 42 20
indice[1] 2
Crear un vector lógico que identifique los valores duplicados en un vector numérico.
Calcular la longitud de un vector.
a
length(a)
## [1] 12 71 23 42 20 98 75 97 4 89
## [1] 10Matrices
En este documento no se podrá observar la forma de la matriz, sin embargo, se observarán los datos de estas, la forma de la matriz creada u obtenida solo se vería si las operaciones se realizan en la consola de RStudio
Crear una matriz 3x3 con valores del 1 al 9.
matrix(1:9, nrow = 3) [,1] [,2] [,3]
[1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
Genera la matriz siguiente
\[\begin{equation} \begin{vmatrix} &1 & 4 & 7&\\ &2 & 5 & 8&\\ &3 & 6 & 9& \end{vmatrix} \end{equation}\]
Calcular la suma de dos matrices.
m1 = matrix(5:20, nrow=4)
m2 = matrix(25:40, nrow = 4)
m3 = m1+m2
kable(m3)| 30 | 38 | 46 | 54 |
| 32 | 40 | 48 | 56 |
| 34 | 42 | 50 | 58 |
| 36 | 44 | 52 | 60 |
\[\begin{equation} m_1 = \begin{vmatrix} &5 & 9 & 13 & 17& \\ &6 & 10 & 14 & 18& \\ &7 & 11 & 15 & 19& \\ &8 & 12 & 16 & 20& \end{vmatrix} \end{equation}\]
\[\begin{equation} m_2 = \begin{vmatrix} &25 & 29 & 33 & 37& \\ &26 & 30 & 34 & 38& \\ &27 & 31 & 35 & 39& \\ &28 & 32 & 36 & 40& \end{vmatrix} \end{equation}\]
\[\begin{equation} m_3 = m_1 + m_2 = \begin{vmatrix} & 30 & 38 & 46 & 54 & \\ & 32 & 40 & 48 & 56 & \\ & 34 & 42 & 50 & 58 & \\ & 36 & 44 & 52 & 60 & \end{vmatrix} \end{equation}\]
Calcular la resta de dos matrices.
m1 = matrix(5:20, nrow=4)
m2 = matrix(25:40, nrow = 4)
m3 = m1-m2
kable(m3)| -20 | -20 | -20 | -20 |
| -20 | -20 | -20 | -20 |
| -20 | -20 | -20 | -20 |
| -20 | -20 | -20 | -20 |
\[\begin{equation} m_1 = \begin{vmatrix} &5 & 9 & 13 & 17& \\ &6 & 10 & 14 & 18& \\ &7 & 11 & 15 & 19& \\ &8 & 12 & 16 & 20& \end{vmatrix} \end{equation}\]
\[\begin{equation} m_2 = \begin{vmatrix} &25 & 29 & 33 & 37& \\ &26 & 30 & 34 & 38& \\ &27 & 31 & 35 & 39& \\ &28 & 32 & 36 & 40& \end{vmatrix} \end{equation}\]
\[\begin{equation} m_3 = m_1 - m_2 = \begin{vmatrix} & -20 & -20 & -20 &-20& \\ & -20 & -20 & -20 &-20& \\ & -20 & -20 & -20 &-20& \\ & -20 & -20 & -20 &-20& \end{vmatrix} \end{equation}\]
Calcular el producto de dos matrices.
m1 = matrix(5:20, nrow=4)
m2 = matrix(25:40, nrow = 4)
m3 = m1*m2
kable(m3)| 125 | 261 | 429 | 629 |
| 156 | 300 | 476 | 684 |
| 189 | 341 | 525 | 741 |
| 224 | 384 | 576 | 800 |
\[\begin{equation} m_1 = \begin{vmatrix} &5 & 9 & 13 & 17& \\ &6 & 10 & 14 & 18& \\ &7 & 11 & 15 & 19& \\ &8 & 12 & 16 & 20& \end{vmatrix} \end{equation}\]
\[\begin{equation} m_2 = \begin{vmatrix} &25 & 29 & 33 & 37& \\ &26 & 30 & 34 & 38& \\ &27 & 31 & 35 & 39& \\ &28 & 32 & 36 & 40& \end{vmatrix} \end{equation}\]
\[\begin{equation} m_3 = m_1 * m_2 \begin{vmatrix} & 125 & 261 & 429 & 629 & \\ & 156 & 300 & 476 & 684 & \\ & 189 & 341 & 525 & 741 & \\ & 224 & 384 & 576 & 800 & \end{vmatrix} \end{equation}\]
Calcular el determinante de una matriz cuadrada.
a<-c(4,5,4)
b<-c(3,4,4)
d<-c(8,7,7)
B<-rbind(a,b,d)
det(B)[1] 11
\[\begin{equation} det(B) = det \begin{vmatrix} & 4 & 5 & 4 \\ & 3 & 4 & 4 \\ & 8 & 7 & 7 \end{vmatrix} = 11 \end{equation}\]
Calcular la matriz inversa de una matriz cuadrada.
a<-c(4,5,4)
b<-c(3,4,4)
d<-c(8,7,7)
B<-rbind(a,b,d)
kable(solve(B))| a | b | d |
|---|---|---|
| 0 | -0.6363636 | 0.3636364 |
| 1 | -0.3636364 | -0.3636364 |
| -1 | 1.0909091 | 0.0909091 |
Transponer una matriz
set.seed(876)
C1=sample(1:1000,100,replace = F)
C2=sample(1:1000,100,replace = F)
C3=sample(1:1000,100,replace = F)
C4=sample(1:1000,100,replace = F)
C5=sample(1:1000,100,replace = F)
m=cbind(C1,C2,C3,C4,C5)
kable(t(m))| C1 | 351 | 183 | 111 | 564 | 197 | 903 | 337 | 751 | 919 | 135 | 331 | 818 | 375 | 897 | 975 | 122 | 715 | 58 | 347 | 498 | 51 | 157 | 116 | 825 | 254 | 217 | 522 | 896 | 429 | 793 | 110 | 953 | 854 | 816 | 246 | 698 | 696 | 526 | 288 | 813 | 357 | 486 | 456 | 963 | 137 | 853 | 80 | 41 | 545 | 491 | 358 | 882 | 114 | 539 | 195 | 752 | 905 | 96 | 536 | 722 | 653 | 394 | 938 | 30 | 97 | 723 | 772 | 942 | 305 | 306 | 329 | 560 | 132 | 453 | 742 | 499 | 83 | 299 | 66 | 196 | 535 | 300 | 336 | 977 | 645 | 540 | 939 | 276 | 753 | 986 | 472 | 555 | 817 | 781 | 941 | 581 | 876 | 651 | 633 | 756 |
| C2 | 363 | 172 | 985 | 650 | 871 | 766 | 899 | 646 | 971 | 57 | 963 | 44 | 600 | 224 | 244 | 167 | 903 | 826 | 256 | 980 | 338 | 33 | 119 | 744 | 579 | 373 | 365 | 507 | 448 | 487 | 740 | 801 | 4 | 425 | 150 | 817 | 179 | 546 | 697 | 796 | 555 | 784 | 388 | 314 | 500 | 443 | 510 | 635 | 235 | 797 | 165 | 923 | 678 | 17 | 520 | 490 | 36 | 686 | 553 | 121 | 117 | 750 | 671 | 18 | 103 | 330 | 52 | 147 | 459 | 773 | 177 | 517 | 898 | 733 | 528 | 913 | 660 | 936 | 788 | 727 | 946 | 795 | 200 | 352 | 581 | 824 | 927 | 943 | 361 | 205 | 109 | 323 | 858 | 730 | 699 | 118 | 751 | 69 | 298 | 532 |
| C3 | 78 | 210 | 239 | 250 | 889 | 401 | 205 | 253 | 338 | 132 | 617 | 686 | 313 | 873 | 930 | 671 | 254 | 155 | 719 | 801 | 73 | 291 | 807 | 696 | 708 | 74 | 524 | 721 | 307 | 831 | 93 | 426 | 158 | 989 | 86 | 457 | 887 | 991 | 88 | 958 | 834 | 385 | 184 | 986 | 147 | 663 | 450 | 854 | 200 | 583 | 84 | 565 | 453 | 717 | 264 | 582 | 637 | 5 | 571 | 6 | 455 | 193 | 232 | 614 | 82 | 212 | 287 | 553 | 118 | 629 | 367 | 404 | 988 | 848 | 127 | 640 | 478 | 446 | 709 | 855 | 675 | 844 | 847 | 368 | 427 | 449 | 759 | 98 | 485 | 424 | 501 | 826 | 271 | 876 | 739 | 953 | 871 | 670 | 786 | 486 |
| C4 | 746 | 451 | 657 | 262 | 487 | 389 | 166 | 638 | 276 | 443 | 864 | 718 | 93 | 75 | 162 | 960 | 282 | 480 | 823 | 449 | 394 | 367 | 996 | 622 | 124 | 631 | 640 | 788 | 173 | 237 | 118 | 985 | 847 | 949 | 613 | 454 | 659 | 138 | 324 | 251 | 925 | 959 | 450 | 988 | 193 | 101 | 737 | 80 | 836 | 500 | 225 | 220 | 912 | 926 | 747 | 755 | 890 | 456 | 527 | 629 | 983 | 704 | 647 | 117 | 291 | 106 | 546 | 646 | 945 | 368 | 950 | 127 | 248 | 491 | 360 | 637 | 39 | 827 | 142 | 752 | 272 | 30 | 23 | 211 | 278 | 22 | 549 | 742 | 174 | 59 | 398 | 616 | 448 | 600 | 992 | 460 | 672 | 860 | 371 | 214 |
| C5 | 839 | 844 | 605 | 169 | 93 | 705 | 550 | 377 | 414 | 108 | 316 | 321 | 994 | 730 | 811 | 831 | 350 | 240 | 153 | 360 | 498 | 727 | 914 | 462 | 470 | 990 | 682 | 759 | 150 | 26 | 156 | 668 | 835 | 788 | 540 | 47 | 182 | 248 | 598 | 137 | 235 | 183 | 663 | 992 | 381 | 404 | 773 | 537 | 30 | 837 | 508 | 955 | 283 | 257 | 802 | 331 | 220 | 547 | 779 | 367 | 594 | 281 | 41 | 745 | 275 | 982 | 521 | 12 | 895 | 628 | 241 | 988 | 948 | 448 | 751 | 873 | 458 | 804 | 456 | 864 | 187 | 317 | 991 | 905 | 9 | 929 | 925 | 382 | 407 | 556 | 635 | 5 | 309 | 862 | 147 | 577 | 234 | 420 | 416 | 92 |
Calcular la media de cada columna de una matriz
set.seed(876)
C1=sample(1:1000,100,replace = F)
C2=sample(1:1000,100,replace = F)
C3=sample(1:1000,100,replace = F)
C4=sample(1:1000,100,replace = F)
C5=sample(1:1000,100,replace = F)
m=cbind(C1,C2,C3,C4,C5)
media = colMeans(m)
m=rbind(m,media)
kable(headTail(m))| C1 | C2 | C3 | C4 | C5 | |
|---|---|---|---|---|---|
| X | 351 | 363 | 78 | 746 | 839 |
| X.1 | 183 | 172 | 210 | 451 | 844 |
| X.2 | 111 | 985 | 239 | 657 | 605 |
| X.3 | 564 | 650 | 250 | 262 | 169 |
| … | … | … | … | … | … |
| X.97 | 651 | 69 | 670 | 860 | 420 |
| X.98 | 633 | 298 | 786 | 371 | 416 |
| X.99 | 756 | 532 | 486 | 214 | 92 |
| media | 512.24 | 510.03 | 499.41 | 497.04 | 508.81 |
Calcular la suma de cada fila de una matriz
set.seed(876)
C1=sample(1:1000,100,replace = F)
C2=sample(1:1000,100,replace = F)
C3=sample(1:1000,100,replace = F)
C4=sample(1:1000,100,replace = F)
C5=sample(1:1000,100,replace = F)
m=cbind(C1,C2,C3,C4,C5)
suma = rowSums(m)
m=cbind(m,suma)
kable(headTail(m))| C1 | C2 | C3 | C4 | C5 | suma | |
|---|---|---|---|---|---|---|
| 1 | 351 | 363 | 78 | 746 | 839 | 2377 |
| 2 | 183 | 172 | 210 | 451 | 844 | 1860 |
| 3 | 111 | 985 | 239 | 657 | 605 | 2597 |
| 4 | 564 | 650 | 250 | 262 | 169 | 1895 |
| … | … | … | … | … | … | … |
| 97 | 876 | 751 | 871 | 672 | 234 | 3404 |
| 98 | 651 | 69 | 670 | 860 | 420 | 2670 |
| 99 | 633 | 298 | 786 | 371 | 416 | 2504 |
| 100 | 756 | 532 | 486 | 214 | 92 | 2080 |
Calcular el producto punto entre dos filas de una matriz
Para este ejemplo las filas de la matriz deberán usarse como vectores, para realizar el producto punto.
El producto punto es la suma de los productos de cada elemento de cada vector, en el caso de dos vectores. \[v_1 \cdot v_2 = (a_{v_1}*a_{v_2})+(b_{v_1}*b_{v_2})+(c_{v_1}*c_{v_2})+...\]
set.seed(876)
C1=sample(1:1000,100,replace = F)
C2=sample(1:1000,100,replace = F)
C3=sample(1:1000,100,replace = F)
C4=sample(1:1000,100,replace = F)
C5=sample(1:1000,100,replace = F)
m=cbind(C1,C2,C3,C4,C5)
kable(headTail(m))| C1 | C2 | C3 | C4 | C5 | |
|---|---|---|---|---|---|
| 1 | 351 | 363 | 78 | 746 | 839 |
| 2 | 183 | 172 | 210 | 451 | 844 |
| 3 | 111 | 985 | 239 | 657 | 605 |
| 4 | 564 | 650 | 250 | 262 | 169 |
| … | … | … | … | … | … |
| 97 | 876 | 751 | 871 | 672 | 234 |
| 98 | 651 | 69 | 670 | 860 | 420 |
| 99 | 633 | 298 | 786 | 371 | 416 |
| 100 | 756 | 532 | 486 | 214 | 92 |
De esta matriz usaremos la fila \(1\) y \(2\), para obtener el producto punto.
Donde cada fila tendrá los siguientes valores: \[f1= 351, 363, 78, 746, 839\] \[f_2= 183, 172, 210, 451, 844\] el producto punto lo obtenemos con el siguiente código
r=f1%*%f2Obteniendo el valor \(1.187611\times 10^{6}\)
Calcular la suma de cada columna de una matriz.
set.seed(876)
C1=sample(1:1000,100,replace = F)
C2=sample(1:1000,100,replace = F)
C3=sample(1:1000,100,replace = F)
C4=sample(1:1000,100,replace = F)
C5=sample(1:1000,100,replace = F)
m=cbind(C1,C2,C3,C4,C5)
suma = colSums(m)
m=rbind(m,suma)
kable(headTail(m))| C1 | C2 | C3 | C4 | C5 | |
|---|---|---|---|---|---|
| X | 351 | 363 | 78 | 746 | 839 |
| X.1 | 183 | 172 | 210 | 451 | 844 |
| X.2 | 111 | 985 | 239 | 657 | 605 |
| X.3 | 564 | 650 | 250 | 262 | 169 |
| … | … | … | … | … | … |
| X.97 | 651 | 69 | 670 | 860 | 420 |
| X.98 | 633 | 298 | 786 | 371 | 416 |
| X.99 | 756 | 532 | 486 | 214 | 92 |
| suma | 51224 | 51003 | 49941 | 49704 | 50881 |
Extraer la diagonal de una matriz.
a<-c(4,5,4)
b<-c(3,4,4)
d<-c(8,7,7)
B<-rbind(a,b,d)
kable(B)| a | 4 | 5 | 4 |
| b | 3 | 4 | 4 |
| d | 8 | 7 | 7 |
De la matriz mostrada los valores de la diagonal son: 4, 4, 7 con el siguiente código:
diag(B)Cambiar el nombre de las filas y columnas de una matriz.
a<-c(4,5,4)
b<-c(3,4,4)
d<-c(8,7,7)
B<-rbind(a,b,d)
kable(B)| a | 4 | 5 | 4 |
| b | 3 | 4 | 4 |
| d | 8 | 7 | 7 |
Las columnas de esta matriz no están nombradas y las filas se llamán a, b, d, con el siguiente código se pueden modificar ambas caracteristicas de la matriz.
colnames(B)=c("C1","C2","C3")
rownames(B)=c("F1","F2","F3")
kable(B)| C1 | C2 | C3 | |
|---|---|---|---|
| F1 | 4 | 5 | 4 |
| F2 | 3 | 4 | 4 |
| F3 | 8 | 7 | 7 |
Concatenar dos matrices por filas.
A <- matrix(c(1,2,3,4), nrow = 2, ncol = 2)
B <- matrix(c(10,11,12,13), nrow = 2, ncol = 2)
kable(A)| 1 | 3 |
| 2 | 4 |
kable(B)| 10 | 12 |
| 11 | 13 |
kable(rbind(A,B))| 1 | 3 |
| 2 | 4 |
| 10 | 12 |
| 11 | 13 |
Concatenar dos matrices por columnas.
A <- matrix(c(1,2,3,4), nrow = 2, ncol = 2)
B <- matrix(c(10,11,12,13), nrow = 2, ncol = 2)
kable(A)| 1 | 3 |
| 2 | 4 |
kable(B)| 10 | 12 |
| 11 | 13 |
kable(cbind(A,B))| 1 | 3 | 10 | 12 |
| 2 | 4 | 11 | 13 |
Reemplazar los valores negativos de una matriz por ceros.
set.seed(879)
A=matrix(sample(-1000:1000,16,replace = F),nrow = 4)
kable(A)| 41 | 92 | -763 | 240 |
| -915 | -470 | -710 | -109 |
| 414 | 431 | -785 | 15 |
| -398 | -516 | -412 | -591 |
cero = ifelse(A<0,0,A)
kable(cero)| 41 | 92 | 0 | 240 |
| 0 | 0 | 0 | 0 |
| 414 | 431 | 0 | 15 |
| 0 | 0 | 0 | 0 |
Calcular la matriz de covarianza de una matriz de datos.
set.seed(174)
C1=sample(1:1000,10,replace = F)
C2=sample(1:1000,10,replace = F)
C3=sample(1:1000,10,replace = F)
C4=sample(1:1000,10,replace = F)
C5=sample(1:1000,10,replace = F)
m=cbind(C1,C2,C3,C4,C5)
cov_m=cov(m)
kable(m)| C1 | C2 | C3 | C4 | C5 |
|---|---|---|---|---|
| 701 | 178 | 34 | 705 | 150 |
| 278 | 238 | 915 | 296 | 865 |
| 449 | 801 | 172 | 70 | 553 |
| 115 | 924 | 885 | 197 | 976 |
| 752 | 654 | 682 | 399 | 941 |
| 960 | 41 | 103 | 659 | 485 |
| 168 | 240 | 409 | 311 | 564 |
| 228 | 252 | 909 | 678 | 367 |
| 417 | 293 | 602 | 569 | 847 |
| 61 | 498 | 913 | 268 | 237 |
kable(cov_m)| C1 | C2 | C3 | C4 | C5 | |
|---|---|---|---|---|---|
| C1 | 91507.66 | -29153.46 | -74500.84 | 34373.13 | -5081.50 |
| C2 | -29153.46 | 85715.88 | 30149.71 | -49170.09 | 37940.61 |
| C3 | -74500.84 | 30149.71 | 128168.93 | -20352.42 | 41306.44 |
| C4 | 34373.13 | -49170.09 | -20352.42 | 49990.18 | -25270.78 |
| C5 | -5081.50 | 37940.61 | 41306.44 | -25270.78 | 88239.61 |
Multiplicar cada elemento de una matriz por un escalar.
set.seed(14)
C1=sample(1:1000,10,replace = F)
C2=sample(1:1000,10,replace = F)
C3=sample(1:1000,10,replace = F)
C4=sample(1:1000,10,replace = F)
C5=sample(1:1000,10,replace = F)
m=cbind(C1,C2,C3,C4,C5)
kable(m)| C1 | C2 | C3 | C4 | C5 |
|---|---|---|---|---|
| 265 | 26 | 471 | 1 | 986 |
| 841 | 495 | 877 | 892 | 8 |
| 267 | 353 | 545 | 590 | 548 |
| 372 | 489 | 182 | 6 | 608 |
| 939 | 899 | 628 | 460 | 983 |
| 752 | 348 | 645 | 48 | 860 |
| 718 | 613 | 506 | 154 | 709 |
| 430 | 99 | 25 | 447 | 22 |
| 80 | 513 | 948 | 581 | 191 |
| 436 | 106 | 808 | 646 | 593 |
k = 4
m = m*k
kable(m)| C1 | C2 | C3 | C4 | C5 |
|---|---|---|---|---|
| 1060 | 104 | 1884 | 4 | 3944 |
| 3364 | 1980 | 3508 | 3568 | 32 |
| 1068 | 1412 | 2180 | 2360 | 2192 |
| 1488 | 1956 | 728 | 24 | 2432 |
| 3756 | 3596 | 2512 | 1840 | 3932 |
| 3008 | 1392 | 2580 | 192 | 3440 |
| 2872 | 2452 | 2024 | 616 | 2836 |
| 1720 | 396 | 100 | 1788 | 88 |
| 320 | 2052 | 3792 | 2324 | 764 |
| 1744 | 424 | 3232 | 2584 | 2372 |
Encontrar el valor máximo y mínimo de una matriz.
set.seed(4)
C1=sample(1:1000,10,replace = F)
C2=sample(1:1000,10,replace = F)
C3=sample(1:1000,10,replace = F)
C4=sample(1:1000,10,replace = F)
C5=sample(1:1000,10,replace = F)
m=cbind(C1,C2,C3,C4,C5)
kable(m)
min(m)
max(m)| C1 | C2 | C3 | C4 | C5 |
|---|---|---|---|---|
| 504 | 312 | 803 | 300 | 511 |
| 587 | 414 | 411 | 197 | 203 |
| 819 | 62 | 365 | 911 | 592 |
| 771 | 614 | 560 | 893 | 910 |
| 71 | 130 | 176 | 150 | 405 |
| 684 | 152 | 869 | 453 | 692 |
| 371 | 385 | 893 | 832 | 65 |
| 757 | 596 | 898 | 880 | 304 |
| 698 | 767 | 928 | 433 | 152 |
| 307 | 747 | 303 | 54 | 892 |
## [1] 54
## [1] 928
De esta matriz el valor máximo es \(928\) y el valor mínimo es \(54\)
Operaciones adicionales
- Resolver un sistema de ecuaciones lineales representado por una matriz.
- Calcular la proyección ortogonal de un vector sobre otro.
- Calcular el rango de una matriz.
- Calcular la traza de una matriz.
- Calcular la matriz identidad de tamaño n.
- Calcular la matriz diagonal a partir de un vector.
- Calcular la matriz de correlación a partir de una matriz de datos.
- Resolver un sistema de ecuaciones lineales sobredeterminado.
- Calcular la matriz de covarianza a partir de una matriz de datos.
- Resolver un problema de aplicación que involucre vectores y matrices.
Notas
https://es.wikipedia.org/wiki/Distancia_euclidiana↩︎