R/test.xts.R

#' Create an xts-object with specified length and interval
#' 
#' @name create_test_xts
#' @description Creates an xts-object with specified length and interval
#' @param n Required length
#' @param from Starting date
#' @param interval Required interval
#' @param tzone Required interval
#' @param randomWalk logical. Should data points generated by using a random walk?
#' @rdname create_test_xts
#' @export
#' @return An xts-object.
#' @seealso \code{\link[xts]{xts}}.
create_test_xts <- function(n,
                            from = NULL, 
                            interval = "mins",
                            tzone = "GMT", 
                            randomWalk=TRUE) {
  
  if (is.null(from)) from <- lubridate::now(tzone = tzone)
  
  time <- seq(from = from, by = interval, length.out = n)
  if (randomWalk) {
    randomWalk <- function(N)(cumsum(ifelse(stats::rbinom(prob = 0.5, 
                                                          size = 1,
                                                          N) == 0, -1, 1)))
    data <- 1.2345 + randomWalk(length(time))*.0001
  } else {
    data <- stats::runif(n = length(time))
  }

  xts <- xts::xts(x = data, order.by = time)
  if (length(time) < 11)  {
    return(xts)
  } 
  
  invisible(xts)
  
}
dleutnant/tsconvert documentation built on May 15, 2019, 9:17 a.m.