inspect_character checks if an object is a character vector. This can be useful to validate inputs in user-defined functions.

inspect_character(x, allow_nas = TRUE, warning_nas = FALSE)

Arguments

x

An arbitrary object.

allow_nas

Logical value. If TRUE then NA and NaN values in x are allowed. If FALSE, execution is stopped and an error message is thrown in case there are NA or NaN values in x.

warning_nas

Logical value. If TRUE then the presence of NA or NaN values in x generates a warning message. NA and NaN values pass silently otherwise (if allow_nas is set to TRUE).

Value

inspect_character does not return any output. There are three possible outcomes:

  • The call is silent if:

    • x is a character vector and there are no NA or NaN values in x.

    • x is a character vector, there are some NA or NaN values in x, allow_nas is set to TRUE and warning_nas is set to FALSE.

  • An informative warning message is thrown if x is a character vector, there are some NA or NaN values in x and both allow_nas and warning_nas are set to TRUE.

  • An informative error message is thrown if:

    • x is not a character vector.

    • x is a character vector, there are some NA or NaN values in x and allow_nas is set to FALSE.

Details

inspect_character conducts a series of tests to check if x is a character vector. Namely, inspect_character checks if:

  • x is NULL or empty.

  • x is an atomic vector.

  • The typeof x is character.

  • There are NA or NaN values in x.

See also

Examples

# Calls that pass silently:
x1 <- "Kass"
x2 <- c("Kass", "Raftery")
x3 <- c("Kass", "Raftery", NA)
x4 <- letters
inspect_character(x1)
inspect_character(x2)
inspect_character(x3)
inspect_character(x4)

# Call that throws an informative warning message
y <- c("Kass", "Raftery", NA)
try(inspect_character(y, warning_nas = TRUE))
#> Warning: There are NA or NaN values in y.

# Calls that throw informative error messages
try(inspect_character(y, allow_nas = FALSE))
#> Error in inspect_character(y, allow_nas = FALSE) : 
#>   Invalid argument: There are NA or NaN values in y.
mylist <- list(
  NULL, character(0), 1,
  c(1, 2), factor(c(1, 2)), list(c(1, 2)), NaN, NA
)
try(inspect_character(mylist[[1]]))
#> Error in inspect_character(mylist[[1]]) : 
#>   Invalid argument: mylist[[1]] is NULL.
try(inspect_character(mylist[[2]]))
#> Error in inspect_character(mylist[[2]]) : 
#>   Invalid argument: mylist[[2]] is empty.
try(inspect_character(mylist[[3]]))
#> Error in inspect_character(mylist[[3]]) : 
#>   Invalid argument: the type of mylist[[3]] must be character.
try(inspect_character(mylist[[4]]))
#> Error in inspect_character(mylist[[4]]) : 
#>   Invalid argument: the type of mylist[[4]] must be character.
try(inspect_character(mylist[[5]]))
#> Error in inspect_character(mylist[[5]]) : 
#>   Invalid argument: mylist[[5]] must be an atomic vector.
try(inspect_character(mylist[[6]]))
#> Error in inspect_character(mylist[[6]]) : 
#>   Invalid argument: mylist[[6]] must be an atomic vector.
try(inspect_character(mylist[[7]]))
#> Error in inspect_character(mylist[[7]]) : 
#>   Invalid argument: all elements of mylist[[7]] are NA or NaN.
try(inspect_character(mylist[[8]]))
#> Error in inspect_character(mylist[[8]]) : 
#>   Invalid argument: all elements of mylist[[8]] are NA or NaN.