在R中比较两个矩阵是否相等

目录

方法一:使用all.equal()比较两个R对象是否近似相等

方法二:使用identical比较两个R对象是否精确相等。


方法一:使用all.equal()比较两个R对象是否近似相等

使用函数:all.equal(x,y) 比较两个R对象x和y是否近似相等

R 复制代码
> M1<-matrix(1:100,ncol=10)
> M1
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11   21   31   41   51   61   71   81    91
 [2,]    2   12   22   32   42   52   62   72   82    92
 [3,]    3   13   23   33   43   53   63   73   83    93
 [4,]    4   14   24   34   44   54   64   74   84    94
 [5,]    5   15   25   35   45   55   65   75   85    95
 [6,]    6   16   26   36   46   56   66   76   86    96
 [7,]    7   17   27   37   47   57   67   77   87    97
 [8,]    8   18   28   38   48   58   68   78   88    98
 [9,]    9   19   29   39   49   59   69   79   89    99
[10,]   10   20   30   40   50   60   70   80   90   100
> M2<-matrix(1:100,ncol=10)
> M2
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11   21   31   41   51   61   71   81    91
 [2,]    2   12   22   32   42   52   62   72   82    92
 [3,]    3   13   23   33   43   53   63   73   83    93
 [4,]    4   14   24   34   44   54   64   74   84    94
 [5,]    5   15   25   35   45   55   65   75   85    95
 [6,]    6   16   26   36   46   56   66   76   86    96
 [7,]    7   17   27   37   47   57   67   77   87    97
 [8,]    8   18   28   38   48   58   68   78   88    98
 [9,]    9   19   29   39   49   59   69   79   89    99
[10,]   10   20   30   40   50   60   70   80   90   100
> all.equal(M1,M2)
[1] TRUE

在帮助文件中的解释:

从帮助文件中的解释,我们可以知道all.equal(x,y)用于比较x与y是否近似相等。如果他们不同,会在某种程度上继续进行比较,并在console中返回差异报告。建议在if表达式中,不要直接使用all.equal函数,而是使用isTRUE(all.equal(...))或者使用identical()函数。

方法二:使用identical比较两个R对象是否精确相等。

identical(x,y)用于比较两个R对象是否完全相等(exactly equal)

identical()函数的帮助文件中的说明:

由此可知,测试两个对象是否完全相等的安全可靠的方法。在这种情况下返回TRUE,其他情况下返回FALSE。

R 复制代码
> M1<-matrix(1:100,ncol=10)
> M1
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11   21   31   41   51   61   71   81    91
 [2,]    2   12   22   32   42   52   62   72   82    92
 [3,]    3   13   23   33   43   53   63   73   83    93
 [4,]    4   14   24   34   44   54   64   74   84    94
 [5,]    5   15   25   35   45   55   65   75   85    95
 [6,]    6   16   26   36   46   56   66   76   86    96
 [7,]    7   17   27   37   47   57   67   77   87    97
 [8,]    8   18   28   38   48   58   68   78   88    98
 [9,]    9   19   29   39   49   59   69   79   89    99
[10,]   10   20   30   40   50   60   70   80   90   100
> M2<-matrix(1:100,ncol=10)
> M2
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11   21   31   41   51   61   71   81    91
 [2,]    2   12   22   32   42   52   62   72   82    92
 [3,]    3   13   23   33   43   53   63   73   83    93
 [4,]    4   14   24   34   44   54   64   74   84    94
 [5,]    5   15   25   35   45   55   65   75   85    95
 [6,]    6   16   26   36   46   56   66   76   86    96
 [7,]    7   17   27   37   47   57   67   77   87    97
 [8,]    8   18   28   38   48   58   68   78   88    98
 [9,]    9   19   29   39   49   59   69   79   89    99
[10,]   10   20   30   40   50   60   70   80   90   100
> identical(M1,M2)
[1] TRUE
> typeof(M1)
[1] "integer"
> typeof(M2)
[1] "integer"

注:使用identical()函数比较两个R对象是否完全相等时,如果不相等,要注意查看是否是数据类型不同,比如一个数据类型是double,一个数据类型是integer。

参考:

如何检查R中两个矩阵是否相等?-面圈网 (mianshigee.com) (介绍all.equal函数的相关示例)

如何在 R 中使用 identical() 函数 - 知乎 (zhihu.com) (介绍identical函数的相关示例)

相关推荐
云边有个稻草人3 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
冷眼看人间恩怨11 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
biomooc11 小时前
R 语言 | 绘图的文字格式(绘制上标、下标、斜体、文字标注等)
开发语言·r语言
Hejjon16 小时前
SpringBoot 整合 SQLite 数据库
笔记
西洼工作室19 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.19 小时前
Webpack学习笔记(2)
笔记·学习·webpack
新手上路狂踩坑20 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
stm 学习ing1 天前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉1 天前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
bohu831 天前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口