2017-06-20 95 views
0

下面的示例可能解釋我想要做什麼,並且您可能知道一個可以有效執行此操作的技巧。使用R,最好不循環,我想乘,例如,這個矩陣:使用R:將矩陣與其轉置相乘,同時忽略缺失值

1 2 
NA 3 
4 5 

通過其轉:

1 NA 4 
2 3 5 

並獲得(其中NA被忽略):

(1x1)+(2x2) (2x3) (1x4)+(2x5) 
    (3x2)  (3x3)  (3x5) 
(4x1)+(5x2) (5x3) (4x4)+(5x5) 

那就是:

05 06 12 
06 09 15 
14 15 41 

回答

1

您可以用0代替NAs,以使其產品不會影響結果:

m1 = matrix(c(1,NA,4,2,3,5),ncol=2) 
m1[is.na(m1)] = 0 
m2 = t(m1) 
m1%*%m2 
    [,1] [,2] [,3] 
[1,] 5 6 14 
[2,] 6 9 15 
[3,] 14 15 41