如何继承斯坦的S4类

时间:2018-12-05 07:17:33

标签: stan rstan

我使用rstan::stan()开发了一些软件包。我创建了一个函数,其返回值是由rstan::stan()生成的S4类对象。为了舒适地访问估计值或添加数据信息,我想创建一个新的S4类对象,该对象继承rstan::stan()的S4类,以便有新的插槽。

此外,新的S4class对象也可用于rstan中的任何函数,例如rstan::traceplot()


fit  <-  rstan::stan( model_name=scr, data=data) # This is a fictitious code.

假设我们得到名为fit的S4(实心)对象。

定义扩展的扩展类

InheritedClass  <- setClass("InheritedClass",

             # New slots
               representation(slotA="character",
                              slotB="character",
                              slotC="numeric"),


               contains = "stanfit"
)

要使用现有的S4类对象创建继承类 的S4对象 ,即fit,  所以我只需要输入添加的新插槽(即slotA,slotB,slotC)的值即可。

使用以下代码,我们可以将旧类的S4对象转换为继承的类:

fit2 <- as(fit,"InheritedClass")

使用此代码,我们可以像下面这样编辑广告位:

   fit2@slotA <- "aaaaaaaaaaaa"

1 个答案:

答案 0 :(得分:1)

请参见help(setClass)。我相信那会是

setClass("classname", slots = c(foo = "numeric", bar = "character"),
         contains = "stanfit")

而且我敢肯定,您必须在软件包的Description文件的Imports:行中包含 rstan ,以便它为{{1 }}。