三重等号 R

triple equal sign R

我正在尝试创建一个检查严格相等性的函数,我想使用三重等号。一些上下文:

> 3 == '3'
[1] TRUE
> FALSE == 0
[1] TRUE

以上所有检查 returns TRUE 因为输入被强制为通用类型。但是我想检查是否严格相等。 identical 函数正是我所需要的。

> identical(3,'3')
[1] FALSE
> identical(FALSE, 0)
[1] FALSE

现在我想以更简洁、更简洁的方式实现它。与 Javascript 一样,我想使用三重等号。我写了这个函数:

`===` <- function(a,b){
  identical(a,b)
}

然而,这并不像预期的那样:

> 3 === 3
Error: unexpected '=' in "3 ==="

我错过了什么? 谢谢

您可以定义中缀运算符(使用 %e% 中的 e for "equal";-):

`%e%` <- function(a, b) identical(a, b)
3 %e% 3
#[1] TRUE

或者如果您想要三等号作为

`%===%` <- function(a, b) identical(a, b)
3 %===% 3
#[1] TRUE

或向量示例

1:3 %===% 1:3
#[1] TRUE

这些中缀运算(其中运算符用在操作数之间)也可以写成

`%===%`(1:3, 1:3) 

就像你可以写的一样

`==`(3, 3)