r - 'show' 是正常的 S4 通用函数吗?

标签 r show s4 generic-function

我正在尝试为我的类创建一个方法,该方法继承自 data.frame。我最初希望也只是从 data.frame 继承 '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))

当我输入 show在 R 控制台中,它打印出:

从包“方法”定义的“显示”的标准通用
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接受一个参数 object ,因此您需要针对该形式参数定义签名和函数定义:

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

您还可以查看为 show 定义的其他方法。通过输入
showMethods(show)

这表明所有其他方法都是根据 object 类定义的。以及。

关于r - 'show' 是正常的 S4 通用函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11439357/

相关文章:

qt - 如何在Qt中的另一个tableView中显示QSqlTableModel过滤后的数据?

javascript - 需要 Javascript 显示两个隐藏的 css div

r - 动态创建嵌套的 s4 类插槽名称并在 R 中分配值

S4 setMethod 的 R 可选参数

r - 如何在R中开发包?

regex - R 中的 list.files 模式参数,扩展正则表达式使用

r - 时区、期间。使用 R 在 xts 中应用

r - 如何在R中制作修剪直方图?

r - 在 R 中选择与时间模式匹配的行

jquery - 显示类而不是 ID (jQuery)