Un ejemplo sencillo:
Introduzcamos una matriz 3x2; por ejemplo,
> A <- matrix(c(1,2,3,4,5,6),nrow=3,ncol=2)
> A
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
Sea (otra) matriz 2x3, que, por ejemplo, introducimos modificando A
sumando 1 a cada componente escalar de la matriz
> B=t(A+1)
> B
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 5 6 7
Calculamos el producto AB
> A%*%B
[,1] [,2] [,3]
[1,] 22 27 32
[2,] 29 36 43
[3,] 36 45 54
Nota: No debe confundirse el producto de dos matrices $C$ por $D$, con $C$ de tamaño $m \times n$ y $D$ de tamaño $n\times p$, el cual da lugar a una matriz $CD$ de tamaño $m \times p$ —para realizar dicho producto en R se utiliza el operador C%*%D (tal como se ha hecho en el ejemplo anterior)—, con el producto componente a componente de sendas matrices (con el operador *), que da lugar a otra matriz del mismo tamaño/dimensión que éstas. Así, por ejemplo, con las siguientes matrices de la misma dimensión
> C <- matrix(c(1,2,3,4,5,6),nrow=2,ncol=3)
> D <- matrix(c(2,3,4,5,6,7),nrow=2,ncol=3)
> C
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> D
[,1] [,2] [,3]
[1,] 2 4 6
[2,] 3 5 7
el producto componente a componente da lugar a otra matriz de las mismas
dimensiones que C y D
> C*D
[,1] [,2] [,3]
[1,] 2 12 30
[2,] 6 20 42
Démonos cuenta de que plantear el producto de matrices
C%*%D no tiene sentido, pues $C$ es $2 \times 3$ (esto es, $m=2$ y $n=3),
al igual que $D$, y por tanto, al no ser igual el número de columnas
del primer factor (la matriz C tiene $3$ columnas) al número de filas
del segundo factor (la matriz D tiene $2$ columnas),
no está definido dicho producto matricial, por lo que el resultado
de aplicar dicho comando daría lugar a un error del programa.
En efecto,
> C%*%D
Error in C %*% D : argumentos no compatibles
Referencias
[1] The UIB-AprendeR team: https://aprender-uib.github.io/AprendeR1/[2] The UIB-AprendeR team: https://aprender-uib.github.io/AprendeR2/
[3] The R Development Core Team: https://cran.r-project.org/manuals.html
$\diamond$
No hay comentarios:
Publicar un comentario