R/update.R

#' Update a jagsUI object
#' 
#' Updates an object of class \code{jagsUI} for a specified number 
#' of iterations.
#' 
#' @param object A model object of class \code{jagsUI}.
#' @param ... Further arguments pass to or from other methods.
#' @inherit jagsUI params return details
#'
#' @aliases update
#' 
#' @export

update.jagsUI <- function(object, params=NULL, n_adapt=100, n_iter, n_thin=1,
                          modules=c("glm","dic"), factories=NULL, 
                          quiet=FALSE, ...){

  #Process input
  check_class(object)
  run_dat <- mget(c("params","n_adapt","n_iter","n_thin","quiet",
                    "modules","factories"))
  run_dat$model_object <- object$model

  if(class(object$model) == 'list'){
    run_dat$n_cores <- length(object$model)
  } else { run_dat$n_cores <- 1 }

  run_dat$n_chains <- length(object$samples)
  run_dat$n_warmup <- 0

  if(is.null(run_dat$params)){
    run_dat$params <- strip_params(rownames(object$summary), unique=TRUE)
  }

  #Run MCMC
  if(run_dat$n_cores == 1){
    out <- run_model(run_dat)
  } else{
    out <- run_parallel(run_dat)
  }

  #Calc summary stats
  out$summary <- calc_stats(out$samples)

  #Assign class
  class(out) <- 'jagsUI'

  return(out)

}
kenkellner/jagsUI2 documentation built on July 5, 2019, 9:38 a.m.