1.8 创建中缀操作符
在之前的教程中,我们学到了如何创建用户自定义的函数。到目前为止,我们提到的大部分函数都是前缀函数,即参数位于函数名后边的括号中。然而,这种语法会使得两个变量之间的二元操作更加难以阅读。因为我们更熟悉把操作符放到两个变量之间。为了解决这个问题,我们会在本教程中展示如何创建中缀操作符。
准备工作
确保你已经在操作系统中安装了R语言,完成了之前的步骤。
实现步骤
执行下列步骤,来创建R中的中缀操作符。
1.让我们看一下,如何把中缀操作符转换为前缀操作符:
2.我们再看一些更高级的转换示例:
3.接下来,我们可以创建中缀操作符,找出两个向量的交集:
4.让我们再创建一个中缀操作符%diff%来找出两个向量的差集:
5.最后我们使用中缀操作符找出3个向量的交集。或者,使用函数Reduce把操作符应用到列表上:
运行原理
在标准函数中,如果想执行变量a和b上的运算,我们需要以func(a,b)的形式创建函数。这是标准函数的语法。这种表示要比一般的数学记号(即a * b)难读。然而我们可以创建中缀操作符来简化这种函数语法。
在创建中缀操作符之前,我们查看了两个变量上二元操作符的不同语法。在第1步中,我们展示了如何用二元操作符执行算术运算。与标准的数学公式类似,我们只需要把二元操作符放到两个变量之间。另一方面,我们可以把中缀表示形式转换为前缀表示形式。就像标准函数一样,我们可以使用二元操作符作为函数名,并把变量放在括号中间。
除了可以在R中使用预定义的中缀操作符,用户也可以自己定义一些。要创建一个操作符,我们需要用%作为函数开始和结尾,并用单引号(')或者反引号(`)包含整个函数名。这里,我们创建了名为%match%的操作符,来找出两个向量的交集。我们也可以创建另一个名为%diff%的操作符来找出两个向量的差集。最后,尽管可以使用创建好的中缀操作符来操作两个以上的向量,但是我们使用函数Reduce在列表上执行%match%运算。
更多技能
我们也可以通过创建同名的中缀操作符,重写已有的操作符:
这里,我们可以使用+连接两个字符串。