¿Cómo multiplicar una array por su transpuesta ignorando los valores faltantes en R?

En este artículo, discutiremos cómo multiplicar una array por su transposición ignorando los valores faltantes en el lenguaje de programación R. Se puede hacer reemplazando todas las NA por 0 en la array

La sustitución de valores, se puede realizar en O(n*m), donde n es el número de filas y m es el número de columnas. Reemplazar por 0 no afecta el producto multiplicativo y, por lo tanto, esta es una solución efectiva. La transposición se puede calcular usando t(array). El producto se puede calcular mediante la siguiente sintaxis en R : 

m1 %*% m2 , where m1 and m2 are the matrices involved. 

Si m1 es la array de n*m ​​dimensiones y m2 de m*n (ya que es la traspuesta), la array producto obtenida es una array cuadrada de n * n.

Ejemplo 1:

R

# declaring matrix 
mat = matrix(c(1, NA, 2, 3, NA, 4), ncol = 2)
  
# replacing matrix NA with 0s
mat[is.na(mat)] = 0
  
# printing original matrix
print ("Original Matrix")
print (mat)
  
# calculating transpose of the
# matrix
transmat = t(mat)
print ("Transpose Matrix")
print (transmat)
  
# calculating product of matrices
prod = mat%*%transmat
print ("Product Matrix")
print (prod)

Producción:

[1] "Original Matrix"
    [,1] [,2]
[1,]    1    3
[2,]    0    0
[3,]    2    4
[1] "Transpose Matrix"
    [,1] [,2] [,3]
[1,]    1    0    2
[2,]    3    0    4
[1] "Product Matrix"
    [,1] [,2] [,3]
[1,]   10    0   14
[2,]    0    0    0
[3,]   14    0   20

La array original tiene las dimensiones 3 x 2 y la transpuesta tiene la dimensión 2×3. Al reemplazar los valores faltantes por 0 y multiplicar estos dos entre sí, obtenemos la array producto equivalente a una array cuadrada de 3×3. 

Ejemplo 2:  La array original es de las dimensiones 1 x 3 y la transpuesta es de la dimensión 3×1. Al reemplazar los valores faltantes por 0 y multiplicar estos dos entre sí, obtenemos la array producto equivalente a la array cuadrada 1×1, que es básicamente una array de celdas singulares. 

R

# declaring matrix 
mat = matrix(c(10, NA, 7), ncol = 3)
  
# replacing matrix NA with 0s
mat[is.na(mat)] = 0
  
# printing original matrix
print ("Original Matrix")
print (mat)
  
# calculating transpose of the
# matrix
transmat = t(mat)
print ("Transpose Matrix")
print (transmat)
  
# calculating product of matrices
prod = mat%*%transmat
print ("Product Matrix")
print (prod)

Producción

[1] "Original Matrix"
    [,1] [,2] [,3]
[1,]   10   0    7
[1] "Transpose Matrix"
    [,1]
[1,]   10
[2,]    0
[3,]    7
[1] "Product Matrix"
    [,1]
[1,]   149

Publicación traducida automáticamente

Artículo escrito por codersgram9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *