2015-10-01 200 views
0

我想比較兩個矩陣比較矩陣和輸出

A B C 
A 1 1 0 
B 0 1 -1 
C 1 0 0 
    A B C 
A 1 -1 0 
B 0 -1 -1 
C 1 0 1 

的差,使得輸出應該

A B C 
A 0 -1 0 
B 0 -1 0 
C 0 0 1 

值,這matrix 1 == matrix 20以及其中matrix1 != matrix2matrix2值將被分配。

回答

3

你可以做mat1==mat2了「逐項」比較,然後把你根據結果所要的號碼: 如果mat1mat2是你的矩陣:基於評論

> ifelse(mat1==mat2, 0, mat2) 
    # A B C 
    # A 0 -1 0 
    # B 0 -1 0 
    # C 0 0 1 

編輯
如果你也想知道哪個值的比例分別爲不相等,你可以這樣做:

eq <- mat1==mat2 # avoid to later compute this twice 
ifelse(eq, 0, mat2) # get the desired matrix 
round(sum(!eq)/length(eq)*100, 2) # get the percentage of non equal values 
#[1] 33.33 
+0

A行一nd B產生的矩陣,該值爲-1,因爲在'mat2'中該值被改變了'-1'。而在C行中,最後一個值應該是'1'而不是'-1',因爲mat1中的對應值(0)在mat2中被替換爲(1)。 – user3253470

+0

感謝您的幫助。 – user3253470

+2

@ user3253470如果這樣可行,那麼您可以通過在答案左側點擊複選標記(http://stackoverflow.com/help/someone-answers)來接受答案。 – Jaap