Added reshape function

This commit is contained in:
Waldir Leoncio 2020-02-25 11:48:12 +01:00
parent c56698f06a
commit 240a3705e4
2 changed files with 51 additions and 0 deletions

24
R/reshape.R Normal file
View file

@ -0,0 +1,24 @@
#' @title Reshape array
#' @description Reshapes a matrix according to a certain number of dimensions
#' @param A input matrix
#' @param sz vector containing the dimensions of the output vector
#' @details This function replicates the functionality of the `reshape()`
#' function on Matlab. This function is basically a fancy wrapper for the
#' `array()` function in R, but is useful because it saves the user translation
#' time. Moreover, it introduces validation code that alter the behavior of
#' `array()` and makes it more similar to `replicate()`.
#' @note The Matlab function also accepts as input the dismemberment of sz as
#' scalars.
reshape <- function(A, sz) {
# Validation
if (prod(sz) != prod(dim(A))) {
stop("To RESHAPE the number of elements must not change.")
}
if (length(sz) == 1) {
stop("Size vector must have at least two elements.")
}
# Reshaping A
A <- array(A, sz)
return(A)
}

27
man/reshape.Rd Normal file
View file

@ -0,0 +1,27 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/reshape.R
\name{reshape}
\alias{reshape}
\title{Reshape array}
\usage{
reshape(A, sz)
}
\arguments{
\item{A}{input matrix}
\item{sz}{vector containing the dimensions of the output vector}
}
\description{
Reshapes a matrix according to a certain number of dimensions
}
\details{
This function replicates the functionality of the `reshape()`
function on Matlab. This function is basically a fancy wrapper for the
`array()` function in R, but is useful because it saves the user translation
time. Moreover, it introduces validation code that alter the behavior of
`array()` and makes it more similar to `replicate()`.
}
\note{
The Matlab function also accepts as input the dismemberment of sz as
scalars.
}