提问者:小点点

算术运算符的参数名称


在查看算术运算符时,它们显示它们的参数具有名称e1e2。使用这些名称时,它们似乎被忽略并且只使用位置。

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

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

是否只能通过位置来定义谁是红利,谁是除数,或者是否有可能使用参数名称?

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

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

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

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

共2个答案

匿名用户

参见? group Generic

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

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

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

匿名用户

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

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