R/states.R

##' Latent states
##'
##' Extract the latent states from a \sQuote{pomp} object.
##'
##' @name states
##' @rdname states
##' @docType methods
##' @include pomp_class.R
##' @importFrom stats setNames
##'
NULL

setGeneric(
  "states",
  function (object, ...)
    standardGeneric("states")
)

##' @name states-pomp
##' @aliases states states,pomp-method
##' @rdname states
##' @inheritParams obs
##'
##' @export
setMethod(
  "states",
  signature=signature(object="pomp"),
  definition=function (object, vars, ...) {
    if (length(object@states)==0) {
      x <- array(NA_real_,dim=c(0,length(object@times)),
        dimnames=setNames(list(NULL,NULL),c("variable",object@timename)))
    } else {
      varnames <- rownames(object@states)
      if (missing(vars)) vars <- varnames
      else if (!all(vars%in%varnames))
        pStop("states","some elements of ",
          sQuote("vars")," correspond to no state variable")
      x <- object@states[vars,,drop=FALSE]
      dimnames(x) <- setNames(list(vars,NULL),c("variable",object@timename))
    }
    x
  }
)
kidusasfaw/pomp documentation built on May 20, 2019, 2:59 p.m.