我使用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"
答案 0 :(得分:1)
请参见help(setClass)
。我相信那会是
setClass("classname", slots = c(foo = "numeric", bar = "character"),
contains = "stanfit")
而且我敢肯定,您必须在软件包的Description文件的Imports:
行中包含 rstan ,以便它为{{1 }}。