如何继承stan的S4 class
How to inherit stan's S4 class
我使用 rstan::stan()
开发了一些包。我创建了一个函数,其 return 值是由 rstan::stan()
生成的 S4 class 对象。为了方便地访问估计值或添加数据信息,我想创建一个新的 S4 class 对象,它继承 rstan::stan()
的 S4 class,以便有新的插槽。
此外,新的 S4class 对象也可用于 rstan
中的任何函数,例如 rstan::traceplot()
.
fit <- rstan::stan( model_name=scr, data=data) # This is a fictitious code.
假设我们得到名为 fit
的 S4 (stanfit) 对象。
定义 stanfit
的扩展 class
InheritedClass <- setClass("InheritedClass",
# New slots
representation(slotA="character",
slotB="character",
slotC="numeric"),
contains = "stanfit"
)
使用现有的 S4 class 对象 创建继承的 class 的 S4 对象,即, fit
,
所以我只需要为添加的新插槽输入值,即 slotA、slotB、slotC。
使用下面的代码,我们可以将旧 class 的 S4 对象转换为继承的 class:
fit2 <- as(fit,"InheritedClass")
使用它我们可以像下面这样编辑插槽:
fit2@slotA <- "aaaaaaaaaaaa"
参见help(setClass)
。我相信它会像
setClass("classname", slots = c(foo = "numeric", bar = "character"),
contains = "stanfit")
而且我确定您必须在包中 DESCRIPTION 文件的 Imports:
行中包含 rstan 才能找到 S4 class stanfit
.
的定义
我使用 rstan::stan()
开发了一些包。我创建了一个函数,其 return 值是由 rstan::stan()
生成的 S4 class 对象。为了方便地访问估计值或添加数据信息,我想创建一个新的 S4 class 对象,它继承 rstan::stan()
的 S4 class,以便有新的插槽。
此外,新的 S4class 对象也可用于 rstan
中的任何函数,例如 rstan::traceplot()
.
fit <- rstan::stan( model_name=scr, data=data) # This is a fictitious code.
假设我们得到名为 fit
的 S4 (stanfit) 对象。
定义 stanfit
的扩展 classInheritedClass <- setClass("InheritedClass",
# New slots
representation(slotA="character",
slotB="character",
slotC="numeric"),
contains = "stanfit"
)
使用现有的 S4 class 对象 创建继承的 class 的 S4 对象,即, fit
,
所以我只需要为添加的新插槽输入值,即 slotA、slotB、slotC。
使用下面的代码,我们可以将旧 class 的 S4 对象转换为继承的 class:
fit2 <- as(fit,"InheritedClass")
使用它我们可以像下面这样编辑插槽:
fit2@slotA <- "aaaaaaaaaaaa"
参见help(setClass)
。我相信它会像
setClass("classname", slots = c(foo = "numeric", bar = "character"),
contains = "stanfit")
而且我确定您必须在包中 DESCRIPTION 文件的 Imports:
行中包含 rstan 才能找到 S4 class stanfit
.