R 比较矩阵并输出差异

R 比较矩阵并输出差异,r,matrix,R,Matrix,我想比较两个矩阵 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 2的值将为0,且matrix1!=matrix2将分配matrix2的值。您可以与mat1==mat2进行“逐项”比较,然后根据结果输入所需的数字: 如果mat1和mat2是您的矩阵: > ifelse(mat1==m

我想比较两个矩阵

  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 2
的值将为
0
,且
matrix1!=matrix2
将分配
matrix2
的值。

您可以与
mat1==mat2
进行“逐项”比较,然后根据结果输入所需的数字: 如果
mat1
mat2
是您的矩阵:

> 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
eq您可以对
mat1==mat2
进行“逐项”比较,然后根据结果输入您想要的数字: 如果
mat1
mat2
是您的矩阵:

> 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
eq您可以对
mat1==mat2
进行“逐项”比较,然后根据结果输入您想要的数字: 如果
mat1
mat2
是您的矩阵:

> 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
eq您可以对
mat1==mat2
进行“逐项”比较,然后根据结果输入您想要的数字: 如果
mat1
mat2
是您的矩阵:

> 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


eq在结果矩阵的A行和B行中,值为-1,因为在“mat2”中,值被“-1”更改。然而,在C行中,最后一个值应该是“1”而不是“-1”,因为mat1(0)中的对应值被mat2中的(1)替换。@user3253470如果这样做有效,那么您可以接受答案左侧的答案。是否可以对此应用一些评分函数。某个函数表示比较矩阵的差异有多大?例如,大约一个百分比。@user3253470所以可能
sum(mat1!=mat2)/length(mat2)*100
@user3253470在同一个问题中扩展您的问题陈述不是一个好的做法。如果您认为CathG answer解决了您的问题,您应该接受它并分别询问您的另一个问题。在结果矩阵的A行和B行中,值为-1,因为在“mat2”中,值被“-1”更改。然而,在C行中,最后一个值应该是“1”而不是“-1”,因为mat1(0)中的对应值被mat2中的(1)替换。@user3253470如果这样做有效,那么您可以接受答案左侧的答案。是否可以对此应用一些评分函数。某个函数表示比较矩阵的差异有多大?例如,大约一个百分比。@user3253470所以可能
sum(mat1!=mat2)/length(mat2)*100
@user3253470在同一个问题中扩展您的问题陈述不是一个好的做法。如果您认为CathG answer解决了您的问题,您应该接受它并分别询问您的另一个问题。在结果矩阵的A行和B行中,值为-1,因为在“mat2”中,值被“-1”更改。然而,在C行中,最后一个值应该是“1”而不是“-1”,因为mat1(0)中的对应值被mat2中的(1)替换。@user3253470如果这样做有效,那么您可以接受答案左侧的答案。是否可以对此应用一些评分函数。某个函数表示比较矩阵的差异有多大?例如,大约一个百分比。@user3253470所以可能
sum(mat1!=mat2)/length(mat2)*100
@user3253470在同一个问题中扩展您的问题陈述不是一个好的做法。如果您认为CathG answer解决了您的问题,您应该接受它并分别询问您的另一个问题。在结果矩阵的A行和B行中,值为-1,因为在“mat2”中,值被“-1”更改。然而,在C行中,最后一个值应该是“1”而不是“-1”,因为mat1(0)中的对应值被mat2中的(1)替换。@user3253470如果这样做有效,那么您可以接受答案左侧的答案。是否可以对此应用一些评分函数。某个函数表示比较矩阵的差异有多大?例如,大约一个百分比。@user3253470所以可能
sum(mat1!=mat2)/length(mat2)*100
@user3253470在同一个问题中扩展您的问题陈述不是一个好的做法。如果你认为CathG答案解决了你的问题,你应该接受它并单独问你的另一个问题。