用于R中的类的setMethod

时间:2016-11-07 21:17:01

标签: r class methods

我正在尝试使用Generic方法“summary”为类“subject”创建一个方法。但是,我收到一条错误消息。你能帮我理解我做错了什么以及如何纠正它?谢谢。

      setGeneric("summary")

      setMethod("summary",
      c(x = "subject"),
      function(x){"This is summary for subject class"})

错误消息如下:

      Error in match.call(definition, call, expand.dots, envir) : 
      unused argument (x = c("subject", ""))

我使用setMethod使用Generic方法“print”为类“subject”创建一个方法,如下所示:

      setMethod("print",
            c(x = "subject"),
            function(x){
                 if (length(x$id) > 0){
                       paste0("Subject ID: ", unique(x$id))}
                 else {"NULL"}
             })

执行上述代码时没有错误。我无法理解这两种情况之间的区别。

1 个答案:

答案 0 :(得分:2)

如果用“object”替换x,则代码有效。即:

     setMethod("summary",
     c(object = "subject"),
     function(object){"This is summary for subject class"})

这里有一些相关信息: Is 'show' a normal S4 generic function?

希望有所帮助。