r语言 - "show"是正常的 S4 泛型函数吗?



我正在尝试为我的类创建一个方法,它继承自data.frame。我最初希望也继承data.frame的"show"方法,但我也可以自己编写。我定义了我的类和"show"方法如下:

setClass("SCvec", representation(auth = "character",
    dev = "character",
    sensor = "character",
    channel = "character",
    starttime = "character",
    endtime = "character"),
    contains="data.frame")
setMethod("show", signature(x="SCvec"), function(x) print(x))

当我在R控制台中键入show时,它会打印出来:

标准从包装"方法"定义的"展示"通用

function (object) 
standardGeneric("show")
<bytecode: 0x0396bee8>
<environment: 0x0393ab60>
Methods may be defined for arguments: object
Use  showMethods("show")  for currently available ones.
(This generic function excludes non-simple inheritance; see ?setIs)

因此,看起来我不需要自己使用StandardGeneric()将其转换为泛型。但是当我运行setMethod("show", signature(x="SCvec"), function(x) print(x))行时,我得到错误

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

我已经定义了这个方法,就像我定义任何其他方法一样。为什么这个方法定义不起作用?"show"与其他泛型函数不同吗?

函数show接受一个参数object,因此您需要针对该形式参数定义签名和函数定义:

setMethod("show", signature(object="SCvec"), function(object) print(object))

您还可以通过键入来查看为show定义的其他方法

showMethods(show)

这向您展示了所有其他方法也是根据object类定义的。

相关内容

  • 没有找到相关文章

最新更新