Nothing
#' Array to vector conversion
#'
#' Convert an array into a vector.
#'
#' This function converts an array (or a multi-way contingency table) into a
#' vector, using a consistent ordering of the cells. The ordering of the cells
#' is lexicographical and cannot be specified by the user.
#'
#' @param tab An array of counts
#' @return a Named integer vector. The names correspond to the cell indices in
#' the table.
#' @export
#' @seealso [vec2tab()]
#' @examples
#'
#' a <- array(1:24, c(2,3,4))
#' tab2vec(a)
#'
#' data(Titanic)
#' tab2vec(Titanic)
#' Titanic[1,1,1,1]
#' Titanic[1,1,1,2]
#'
#'
tab2vec <- function(tab){
# if is a vector, return
if(is.null(dim(tab))){
tab <- as.vector(tab)
names(tab) <- 1:length(tab)
return(tab)
}
# if it's a vector already, short-circuit
if(length(dim(tab)) == 1){
tab <- as.vector(tab)
names(tab) <- 1:length(tab)
return(tab)
}
# otherwise, rotate and class
u <- aperm(tab, length(dim(tab)):1)
if(class(tab[1]) == "numeric") u <- as.vector(u)
if(class(tab[1]) == "integer") u <- as.integer(u)
# create cell indices
tmpdf <- expand.grid(
rev.default(lapply(dim(tab), function(x) 1:x))
)[,length(dim(tab)):1]
# assign them as names to u
names(u) <- apply(tmpdf, 1, paste, collapse = ',')
# return
u
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.