我试图超载+运算符并遇到不兼容问题。即使+是一个S3泛型函数,它似乎也会查看两个参数(类似于多个调度)而不仅仅是左边的参数,就像其他S3泛型函数一样(参见组"运算"在{{3} })。因此,如果为参数定义了两个不同的+函数,则R发出警告并回退到+两个数值。
以下是一个例子:
myType1 <- function(obj) {
structure(obj, class = "myType1")
} # function myType1
`+.myType1` <- function(obj1, obj2) {
return(obj1)
} # function +.myType1
myType2 <- function(obj) {
structure(obj, class = "myType2")
} # function myType2
`+.myType2` <- function(obj1, obj2) {
return(obj2)
} # function +.myType2
myType1("A") + 1 # this works, use defined types seem to have precedence
myType1("A") + myType2(1) # this doesn't
有没有办法解决这个问题?我知道S4方法支持多个调度。使用S4会帮助我避免这个问题,即使为其中一个参数定义了一个S3 +方法吗?
提前非常感谢你。
此致 Junghoon Lee