算术运算符的参数名称

GKi*_*GKi 10 r

当查看算术运算符时,它们显示它们的参数具有名称e1e2。当使用这些名称时,看起来它们被忽略了,只使用了位置。

`/`(e1 = 1, e2 = 2)
#[1] 0.5

`/`(e2 = 1, e1 = 2) #Here I would have expected 2 as the result
#[1] 0.5
Run Code Online (Sandbox Code Playgroud)

是否只能通过位置来定义谁是被除数,谁是除数,还是可以使用参数名称?

创建自定义二元运算符时,不会忽略名称。

`%div%` <- function(e1, e2) {e1 / e2}

`%div%`(e1 = 1, e2 = 2)
#[1] 0.5

`%div%`(e2 = 1, e1 = 2)
#[1] 2
Run Code Online (Sandbox Code Playgroud)

zx8*_*754 7

?groupGeneric

如果该组的成员作为函数调用,则删除任何参数名称以确保始终使用位置匹配。

注意/提示:我通过 进入该帮助页面?Arithmetic,然后在详细信息部分提到查看调度操作:

一元和二元算术运算符是通用函数:可以单独为它们编写方法,也可以通过 Ops 组通用函数编写方法。(有关如何计算调度的信息,请参阅 Ops。)


Tho*_*ing 5

当我们深入研究 的C源代码/时,我们可以看到下面的两个标量的代码(我不是分析源代码的 R 专家,但也许我们也可以在那里找到一些线索)。

似乎没有考虑参数名称,而只考虑位置。

在此输入图像描述