2

来自http://adv-r.had.co.nz/Functions.htmlR:像 %in% 这样的运算符是什么,我如何了解它们?我了解到可以使用%-sign 编写自己的“二元运算符”或“中缀函数”。一个例子是

'%+%' <- function(a, b) a*b
x <- 2
y <- 3
x %+% y # gives 6 

但是,如果它们来自预定义的类,是否可以以通用方式使用它们(这样在某些情况下我不必使用%-sign)?例如,如果他们来自班级,x + y则应给予。6prod

4

1 回答 1

2

是的,这是可能的:使用'+.<class name>' <- function().

例子

'+.product' <- function(a, b) a * b
'+.expo' <- function(a, b) a ^ b

m <- 2; class(m) <- "product"
n <- 3; class(n) <- "product"

r <- 2; class(r) <- "expo"
s <- 3; class(s) <- "expo"

m + n # gives 6
r + s # gives 8

安全注意事项

如果至少有一个参数来自相应的类m + 4给你2 * 4 = 8而不是,则将调用新定义的函数2 + 4 = 6。如果类不匹配,您将收到一条错误消息(如 for r + m)。所以总而言之,请确保您要在诸如+.

于 2017-01-26T17:25:17.773 回答