我写了一个s4类,并覆盖了“ ==”-operator with
setMethod("==",
signature=c(e1="CAttribute", e2="CAttribute"),
definition=function(e1, e2)
{
return(getName(e1) == getName(e2))
}
)
如果我现在要测试CAttribute的实例是否在CAttributes列表中,
a1 <- new("CAttribute", name="a1")
l <- list(new("CAttribute", name="a1"), new("CAttribute", name="a2"))
a1 %in% l
我收到以下错误
Error in match(x, table, nomatch = 0L) :
'match' requires vector arguments
我做错了什么,我该如何测试s4对象列表中是否存在与某个“ ==-运算符”相对应的特定对象?
最佳答案
如果不覆盖%in%
,它将使用在help中可以找到的%in%
的当前实现:
"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0
match
函数不需要类CAttribute
的对象,这可以解释您的错误。