ourMELONS/R/zeros_ones.R
Waldir Leoncio fca9caa731 Restyled files
Ran through styler::style_dir() in the R and tests directories in preparation for #23.
2021-11-10 14:25:50 +01:00

50 lines
1.4 KiB
R

#' @title Matrix of zeros or ones
#' @description Generates a square or rectangular matrix of zeros or ones
#' @param n scalar or 2D vector
#' @param x value to fill matrix with
#' @return n-by-n matrix filled with `x`
#' @details This is a wrapper function to replicate the behavior of the
#' `zeros()` and the `ones()` functions on Matlab
#' @note Actually works for any `x`, but there's no need to bother imposing
#' validation controls here.
zeros_or_ones <- function(n, x) {
# Expanding n to length 2 if necessary
if (length(n) == 1) n <- c(n, n)
# Returning a matrix or an array
if (length(n) == 2) {
return(matrix(x, n[1], n[2]))
} else {
return(array(x, dim = n))
}
}
#' @title Matrix of zeros
#' @description wrapper of `zeros_or_ones()` that replicates the behavior of
#' the `zeros()` function on Matlab
#' @param n1 number of rows
#' @param n2 number of columns
#' @param ... extra dimensions
zeros <- function(n1, n2 = n1, ...) {
if (length(n1) == 1) {
n <- c(n1, n2, ...)
} else {
n <- n1
}
return(zeros_or_ones(n, 0))
}
#' @title Matrix of ones
#' @description wrapper of `zeros_or_ones()` that replicates the behavior of
#' the `ones()` function on Matlab
#' @param n1 number of rows
#' @param n2 number of columns
#' @param ... extra dimensions
ones <- function(n1, n2 = n1, ...) {
if (length(n1) == 1) {
n <- c(n1, n2, ...)
} else {
n <- n1
}
return(zeros_or_ones(n, 1))
}