为什么';t中缀函数:=来自tidyverse是否需要它周围的%?
如果要创建自己的中缀函数,则需要使用为什么';t中缀函数:=来自tidyverse是否需要它周围的%?,r,tidyverse,infix-operator,R,Tidyverse,Infix Operator,如果要创建自己的中缀函数,则需要使用%fun\u name%格式。为什么tidyverse的:=不是这样?同样,操作员,也可构成tidyverse这些运算符是而不是函数。它们只有在作为参数的一部分提供给使用非标准求值并知道如何处理它们的函数时才有意义。R解释器不将这些运算符视为函数,您不能直接调用它们。如果您调用!!解释器将准独立参数之外的某些内容视为: !(!(something)) 如果在准整数参数外部调用:=,则会得到一个异常 另外,您可以总是重载基本中缀函数或为它们定义新的S3方法,而
%fun\u name%
格式。为什么tidyverse的:=
不是这样?同样,操作员
,也可构成tidyverse
这些运算符是而不是函数。它们只有在作为参数的一部分提供给使用非标准求值并知道如何处理它们的函数时才有意义。R解释器不将这些运算符视为函数,您不能直接调用它们。如果您调用!!解释器将准独立参数之外的某些内容视为:
!(!(something))
如果在准整数参数外部调用:=
,则会得到一个异常
另外,您可以总是重载基本中缀函数或为它们定义新的S3方法,而无需%
。解释器总是将这些符号视为中缀函数,并且不保留它们。e、 g:
> `+` <- function(x,y) x - y
> 1 + 2
[1] -1
`/.foo` <- function(x, y) x * y
> my_object <- structure(1, class = "foo")
> 1 / 2
[1] 0.5
> my_object / 2
[1] 2
attr(,"class")
[1] "foo"
> `:=` <- function(x,y) x - y
> 5 := 2
[1] 3