【问题标题】:Compare matrices and output the difference比较矩阵并输出差异
【发布时间】:2015-10-01 10:36:22
【问题描述】:

我想比较两个矩阵

  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 的值将是 0matrix1 != matrix2 的值将被分配 matrix2

【问题讨论】:

    标签: r matrix


    【解决方案1】:

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

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

    根据 cmets 进行编辑
    如果您还想知道哪个百分比的值不相等,您可以这样做:

    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
    

    【讨论】:

    • 在结果矩阵的 A 行和 B 行中,值为 -1,因为在“mat2”中,该值已更改为“-1”。而在 C 行中,最后一个值应该是“1”而不是“-1”,因为 mat1 (0) 中的对应值被 mat2 中的 (1) 替换。
    • @user3253470 如果可行,那么您可以通过答案左侧的clicking the checkmark 接受答案。
    • 是否可以在此应用一些评分功能。一些代表比较矩阵有多大不同的函数?例如百分比左右..
    • @user3253470 所以可能是sum(mat1!=mat2)/length(mat2)*100
    • @user3253470 在同一个问题中扩展您的问题陈述不是一个好习惯。如果您认为 CathG 的答案可以解决您的问题,您应该接受它并单独提出您的另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多