我有两个文件,每个文件包含一个S4类和一个通用方法。泛型方法foo()
的名称相同,但定义可以相同也可以不同,它可以采用相同的参数或不同的参数。然后我用它创建一个R包并使用该R包。
档案1
setOldClass("jobj")
Filter <- setClass("Filter",representation(jobj="jobj"))
setMethod("initialize", "Filter", function(.Object, col){
.Object@jobj <-callJStatic(col)
.Object
})
setGeneric(name="foo",
def=function(object,df)
{
standardGeneric("foo")
}
)
setMethod(f="foo",
signature="Filter",
definition=function(object,df)
{
print("Filter foo")
return(callJMethod(object@jobj,"foo",df@sdf)
}
)
文件2
Jilter <- setClass("Jilter",representation(jobj="jobj"))
setMethod("initialize", "Jilter", function(.Object, colexp){
.Object@jobj <- callJStatic(colexp)
.Object
})
setGeneric(name="foo",
def=function(object,df)
{
standardGeneric("foo")
}
)
setMethod(f="foo",
signature="Jilter",
definition=function(object,df)
{
print("Jilter foo")
return(callJMethod(object@jobj,"foo",df@sdf)))
}
)
TEST1
library(FILTER)
fltrobj <- new("Filter","col")
result <- FILTER:::foo(fltrobj,df)
测试2
library(FILTER)
jltrobj <- new("Jilter","colexp")
result<-FILTER:::foo(jltrobj,df)
对foo的调用在一次测试中起作用,在其他测试中不起作用。返回的错误是:
(函数(classes,fdef,mtable)中的错误: 无法为签名'“Jilter”'
找到函数'foo'的继承方法
如果我将其设为foo1
和foo2
则可行。有没有办法使它工作或R S4类不可能。