Как наследовать класс S4 Стэна - PullRequest
0 голосов
/ 05 декабря 2018

Я разрабатываю пакет, используя rstan::stan().Я делаю функцию, возвращаемое значение которой является объектом класса S4, сгенерированным rstan::stan().Чтобы получить удобный доступ к оценкам или добавить информацию для данных, я хочу создать новый объект класса S4, который наследует класс S4 rstan::stan(), чтобы появились новые слоты.

Кроме того, новый объект S4class также можетбыть доступным для любых функций в rstan, таких как rstan::traceplot().


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

Предположим, мы получаем объект S4 (stanfit) с именем fit.

Определите расширенный классstanfit

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 голосов
/ 05 декабря 2018

См. help(setClass).Я полагаю, что это будет что-то вроде

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

И я уверен, что вам нужно будет включить rstan в строку Imports: файла DESCRIPTION в вашем пакете, чтобы оннайти определение класса S4 для stanfit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...