R

时间:2016-06-01 10:47:29

标签: r

我有两个文件,每个文件包含一个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'的继承方法

如果我将其设为foo1foo2则可行。有没有办法使它工作或R S4类不可能。

0 个答案:

没有答案