inspect_data_categorical checks if an object contains data that is eligible to have been generated by a Multinomial distribution. This can be useful to validate inputs in user-defined functions.

inspect_data_categorical(data, allow_nas = TRUE, warning_nas = FALSE)

Arguments

data

An arbitrary object.

allow_nas

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

warning_nas

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

Value

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

  • The call is silent if:

    • data is eligible to have been generated by a Multinomial distribution and there are no NA or NaN values in data.

    • data is eligible to have been generated by a Multinomial distribution, there are some NA or NaN values in data and warning_nas is set to FALSE.

  • An informative warning message is thrown if: data is eligible to have been generated by a Multinomial distribution, there are some NA or NaN values in data and warning_nas is set to TRUE.

  • An informative error message is thrown and the execution is stopped if:

    • data is not eligible to have been generated by a Multinomial distribution.

    • data is eligible to have been generated by a Multinomial distribution, there are some NA or NaN values in data and allow_nas is set to TRUE.

Details

inspect_data_categorical conducts a series of tests to check if data is eligible to have been generated by a Multinomial distribution. Namely, inspect_data_categorical checks if:

  • data is NULL or empty.

  • data is atomic and have an eligible data type (logical, integer, double, character).

  • data has NA or NaN values.

See also

Examples

# Calls that pass silently:
x1 <- c(1, 0, 0, 1, 2)
x2 <- c(FALSE, FALSE, TRUE, NA)
x3 <- c("yes", "no", "yes", "maybe")
x4 <- factor(c("yes", "no", "yes", "maybe"))
x5 <- c(1, 0, 0, 1, 0, NA, 2)
inspect_data_categorical(x1)
inspect_data_categorical(x2)
inspect_data_categorical(x3)
inspect_data_categorical(x4)
inspect_data_categorical(x5)
inspect_data_categorical(x5)

# Call that throws an informative warning message:
y1 <- c(1, 1, NA, 0, 0, 2)
try(inspect_data_categorical(y1, warning_nas = TRUE))
#> Warning: There are NA or NaN values in y1.

# Calls that throw an informative error message:
z <- c(1, 1, NA, 0, 0, 2)
try(inspect_data_categorical(z, allow_nas = FALSE))
#> Error in inspect_data_categorical(z, allow_nas = FALSE) : 
#>   Invalid argument: there are NA or NaN values in  z.
try(inspect_data_categorical(NULL))
#> Error in inspect_data_categorical(NULL) : Invalid argument: NULL is NULL.
try(inspect_data_categorical(list(1, 0)))
#> Error in inspect_data_categorical(list(1, 0)) : 
#>   Invalid argument: list(1, 0) must be atomic.
try(inspect_data_categorical(numeric(0)))
#> Error in inspect_data_categorical(numeric(0)) : 
#>   Invalid argument: numeric(0) is empty.
try(inspect_data_categorical(NaN))
#> Error in inspect_data_categorical(NaN) : 
#>   Invalid argument: all elements of NaN are NA or NaN.
try(inspect_data_categorical(NA))
#> Error in inspect_data_categorical(NA) : 
#>   Invalid argument: all elements of NA are NA or NaN.