#' Insert a vector y inside another vector x at position
#'
#' The vectors in the y list will be inserted
#' at positions respectively *after* the x[position] element of x
#'
#' @param x A vector to be inserted into
#' @param y A vector or list of vectors to insert into x
#' @param position The position / vector of positions to insert vector(s) y in vector x
#' @return The combined vector
#' @keywords internal
insert <- function(x, y, position) {
# y is supposed to be a list of vectors. If it is a single vector, make it a simple list containing that vector
if (!is.list(y)) y <- list(y)
# Stop if there is not as many positions as vectors to insert
stopifnot(length(y) == length(position))
# Create an empty return vector that will contain the partition of x and the inserts
result <- vector("list", 2 * length(position) + 1)
# Split x in groups between the insert positions
old <- split(x, cumsum(seq_along(x) %in% (position + 1)))
# Insert the x splits at odd positions in result
result[seq(from = 1, by = 2, length.out = length(old))] <- old
# Insert the y inserts at even positions in results
result[c(F, T)] <- y
# Return a simple vector
unlist(result)
}
#' Is the object possibly a desctable?
#'
#' Check if the object is produced by desc_table.
#' Return a string:
#' - simple
#' - grouped
#' or FALSE if not a desctable
#'
#' @param desctable A potential desctable to check
#' @return The type of desctable or FALSE
#' @keywords internal
which.desctable <- function(desctable)
{
attributes <- list()
if (all(c("data", ".stats", ".vars") %in% names(desctable)))
"grouped"
else if (is.data.frame(desctable) & ("Variables" %in% names(desctable)))
"simple"
else
""
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.