R中类的setMethod

im7*_*im7 0 methods r class

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

      setGeneric("summary")

      setMethod("summary",
      c(x = "subject"),
      function(x){"This is summary for subject class"})
Run Code Online (Sandbox Code Playgroud)

错误消息如下:

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

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

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

上述代码执行没有错误。我不明白这两种情况有什么区别。

im7*_*im7 5

如果 x 替换为“对象”,则代码有效。IE:

     setMethod("summary",
     c(object = "subject"),
     function(object){"This is summary for subject class"})
Run Code Online (Sandbox Code Playgroud)

这里有一些相关信息: “显示”是正常的 S4 通用函数吗?

希望有帮助。