R 正确指定S4泛型

R 正确指定S4泛型,r,generics,s4,R,Generics,S4,抱歉我的无知,但我不明白如何正确实现S4泛型。在过去的几个小时里我一直在挣扎。希望这是一个简单的解决方案 我试图为我的类定义一些简单的方法,比如print和summary。我已经尝试了下面的一系列不同的变化。下面的内容似乎是最接近工作的,但显然仍然不合适 正确的方法是什么?我做错了什么? setClass(“foo”, 表示=列表(method=“character”, mle_iter=“数值”, mle_log_lik=“数值”, data=“list”)) print.foo长度类模式 1

抱歉我的无知,但我不明白如何正确实现S4泛型。在过去的几个小时里我一直在挣扎。希望这是一个简单的解决方案

我试图为我的类定义一些简单的方法,比如
print
summary
。我已经尝试了下面的一系列不同的变化。下面的内容似乎是最接近工作的,但显然仍然不合适

正确的方法是什么?我做错了什么?
setClass(“foo”,
表示=列表(method=“character”,
mle_iter=“数值”,
mle_log_lik=“数值”,
data=“list”))
print.foo长度类模式
1模多输入S4
我想这是对我无知的一个简单的修正,但我不确定是什么。提前谢谢

S4使用
show()
而不是打印。泛型已存在

getGeneric("show")
所以你的工作就是实现一种方法

setMethod("show", "foo", function(object) {
    cat("I'm a foo\n")
})
summary
是S3通用方法,根据
方法
建议实施S3方法和S4方法

summary.foo <- function(object, ...) {
    ## implement summary.foo
    "I'm a foo"
}

setMethod("summary", "foo", summary.foo)
在设置方法之前

如果要实现一个全新的泛型and方法,那么代码将遵循该模式

setGeneric("bar", function(x, ...) standardGeneric("bar"))

setMethod("bar", "foo", function(x, ...) {
    ## implement 'bar,foo-method'
})

在这种情况下,不需要创建S3泛型或S3方法。

谢谢!我已经更新了这个问题,加入了一个总结方法,这个方法也不起作用。谢谢你的建议。嗯。。。这适用于我上面的玩具示例;但不适用于我的实际代码。我使用了完全相同的结构。我已经编辑了我的问题,以包括我从非玩具示例中获得的输出。我们可以将讨论转移到聊天吗?我可以提供到真实类的github链接definitions@Alex在github存储库中,不要定义S3
print.mod\u imputeMulti
print()
自动查找S4对象的
show()
)。在名称空间文件中,请记住
exportMethods(“show”、“summary”)
(对于S4方法)和
S3方法(summary,mod_imputeMulti)
(对于S3方法),如
RShowDoc(“R-exts”)
第1.5节所示。还必须
导入(方法)
,才能从方法包中获取功能(S3
摘要
来自基本名称空间,并且始终隐式导入)。
summary.foo <- function(object, ...) {
    ## implement summary.foo
    "I'm a foo"
}

setMethod("summary", "foo", summary.foo)
setGeneric("summary")

summary.foo <- function(object, ...) {
    ## implement summary.foo
    "I'm a foo"
}

setMethod("summary", "foo", summary.foo)
setGeneric("bar", function(x, ...) standardGeneric("bar"))

setMethod("bar", "foo", function(x, ...) {
    ## implement 'bar,foo-method'
})