定义一个 S4 class,其插槽在另一个包中有 class 定义

Define an S4 class with slots that have their class definitions in another package

我想在 R 中定义一个 S4 class。其中一个插槽应包含一个 mcmc 对象,如 coda 包中定义的那样。我尝试了以下方法:

library("coda")
setClass(Class = "myClass", representation = representation(var = "mcmc"))

但这会导致警告:

Undefined slot classes in the definition of "myClass": var(class "mcmc")

class 定义稍后不起作用并抛出一条错误消息,因为 var 有一个 "undefined class".

如何告诉 setClass 命令到哪里寻找 mcmc 对象的定义?

我认为这是因为 mcmc 是 S3 class 而不是正式的 S4 class。您需要使用 setOldClassS3 注册为正式定义的 class.

setOldClass("mcmc")
setClass(Class = "myClass", representation = representation(var = "mcmc"))