三等号R

问题描述 投票:0回答:1

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

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

以上所有检查均返回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 ==="

我想念的是什么?谢谢

r function symbols equality
1个回答
3
投票

您可以定义一个中缀运算符(e中的%e%表示“等于”;-):

`%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

这些中缀运算(其中使用运算符between操作数)也可以写成

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

以您可以写的相同方式

`==`(3, 3)
© www.soinside.com 2019 - 2024. All rights reserved.