Skip to contents

Check if arg is a non-empty string, a scalar character vector that is not "".

Usage

check_nonempty_string(arg, signal = "error", msg = NULL, call. = FALSE)

Arguments

arg

(object)
The argument to check.

signal

(string: c("error", "warning", "message"))
Must be one of "error", "warning", or "message". "error" (default) calls base::stop() to signal an error message. "warning" calls base::warning() to signal a warning message. "message" calls base::message() to signal a message.

msg

(string or NULL: NULL)
A string that replaces the default message. Set as NULL to use the default message.

call.

(Scalar logical: c(FALSE, TRUE))
Passed to stop() or warning(). The default msg includes it's own formatted call, hence call. should be FALSE (default). If you insert your own msg, then you may want call. = TRUE.

Value

invisible(arg) or condition determined by argument signal.

Details

Unlike check_string(), a non-empty string rejects "". This matches the common case of a name, path, or label argument that must carry content. A missing value (NA) is accepted, matching check_string(). Chain check_nonmissing() to also reject NA.

Examples

#----------------------------------------------------------------------------
# check_nonempty_string() examples
#----------------------------------------------------------------------------
library(bkcheck)

f <- function(x) {
  x |>
    check_nonempty_string()
}

f("a")
f(NA_character_)

try(f(""))
#> Error : Argument `x` must be a non-empty string (scalar character vector).
#> 
#> `x` = ''
#> class(x) = 'character'
#> length(x) = 1
#> 
#> Call: f(x = "")
try(f(1L))
#> Error : Argument `x` must be a non-empty string (scalar character vector).
#> 
#> `x` = 1
#> class(x) = 'integer'
#> length(x) = 1
#> 
#> Call: f(x = 1L)
try(f(c("a", "b")))
#> Error : Argument `x` must be a non-empty string (scalar character vector).
#> 
#> `x` = 'a', 'b'
#> class(x) = 'character'
#> length(x) = 2
#> 
#> Call: f(x = c("a", "b"))
try(f(factor("a")))
#> Error : Argument `x` must be a non-empty string (scalar character vector).
#> 
#> `x` = 'a'
#> class(x) = 'factor'
#> length(x) = 1
#> 
#> Call: f(x = factor("a"))