在 R 中定义自定义中缀运算符是“常见的”,例如
`%op%` <- function(e1, e2) someOperation(e1, e2)
result <- e1 %op% e2
似乎不可能定义一元运算符(对应于例如!
):
(举一个最小的例子:)
`%op%` <- function(x) x
# the definition works fine
`%op%`
# function(x) x
# but usage fails
%op% x
# Error: unexpected SPECIAL in "%op%"
然而,!
运算符本身似乎以相同的方式定义,至少就用户而言:
`!`
# function (x) .Primitive("!")
但显然内部结构不同,因为我的功能不起作用。这有什么具体原因吗?还是有另一种我不知道的方法?(我不记得任何提供一元前缀运算符的包或类似的包,所以答案很可能是它不起作用......)