diff --git a/R/isempty.R b/R/isempty.R new file mode 100644 index 0000000..fada645 --- /dev/null +++ b/R/isempty.R @@ -0,0 +1,13 @@ +#' @title Is Array Empty? +#' @description Determine whether array is empty. An empty array, table, or timetable has at least one dimension with length 0, such as 0-by-0 or 0-by-5. +#' @details Emulates the behavior of the `isempty` function on Matlab +#' @param x array +#' +isempty <- function(x) { + if (class(x) %in% c("array", "matrix")) { + dim_mat_x <- dim(x) + } else { + dim_mat_x <- dim(matrix(x)) + } + return(any(dim_mat_x == 0) | is.null(dim_mat_x)) +} \ No newline at end of file diff --git a/man/isempty.Rd b/man/isempty.Rd new file mode 100644 index 0000000..e4ddc43 --- /dev/null +++ b/man/isempty.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/isempty.R +\name{isempty} +\alias{isempty} +\title{Is Array Empty?} +\usage{ +isempty(x) +} +\arguments{ +\item{x}{array} +} +\description{ +Determine whether array is empty. An empty array, table, or timetable has at least one dimension with length 0, such as 0-by-0 or 0-by-5. +} +\details{ +Emulates the behavior of the `isempty` function on Matlab +} diff --git a/tests/testthat/test-convertedBaseFunctions.R b/tests/testthat/test-convertedBaseFunctions.R index b94ab16..357ce70 100644 --- a/tests/testthat/test-convertedBaseFunctions.R +++ b/tests/testthat/test-convertedBaseFunctions.R @@ -128,4 +128,19 @@ test_that("strcmp works as expected", { expect_equivalent(strcmp(s1, s3), c(FALSE, TRUE, FALSE, FALSE)) expect_error(strcmp(s2, s3)) expect_equal(strcmp(s4, s5), matrix(c(FALSE, TRUE, FALSE, TRUE), 2)) +}) + +test_that("isempty works as expected", { + A <- array(dim=c(0, 2, 2)) + B <- matrix(rep(NA, 4), 2) + C <- matrix(rep(0, 4), 2) + cat1 <- as.factor(c(NA, NA)) + cat2 <- as.factor(c()) + str1 <- matrix(rep("", 3)) + expect_true(isempty(A)) + expect_false(isempty(B)) + expect_false(isempty(C)) + expect_false(isempty(cat1)) + expect_true(isempty(cat2)) + expect_false(isempty(str1)) }) \ No newline at end of file