Checks whether a vector can be converted to a length-1 base::Date vector.
stabilize_date_scalar() is optimized to check for length-1 date vectors
(compared to stabilize_date() with max_size = 1). stabilise_date_scalar
is a synonym of stabilize_date_scalar().
Usage
stabilize_date_scalar(
x,
...,
tz = "UTC",
treat_number_as = c("days", "seconds", "milliseconds", "error"),
allow_null = FALSE,
allow_zero_length = FALSE,
allow_na = TRUE,
min_value = NULL,
max_value = NULL,
allowed_values = NULL,
accepted_datetime_formats = locale_datetime_formats(),
named = NULL,
x_arg = caller_arg(x),
call = caller_env(),
x_class = object_type(x)
)
stabilise_date_scalar(
x,
...,
tz = "UTC",
treat_number_as = c("days", "seconds", "milliseconds", "error"),
allow_null = FALSE,
allow_zero_length = FALSE,
allow_na = TRUE,
min_value = NULL,
max_value = NULL,
allowed_values = NULL,
accepted_datetime_formats = locale_datetime_formats(),
named = NULL,
x_arg = caller_arg(x),
call = caller_env(),
x_class = object_type(x)
)Arguments
- x
The object to stabilize.
- ...
Arguments passed to methods.
- tz
(
character(1)) The time zone to normalizexto. Must be a value fromOlsonNames()or"", which is replaced by the name of your local time zone (as reported bySys.timezone()) so that the result always names its time zone. To use the time zone of an existing object, or your local time zone if it doesn't have one, usetz = resolve_tz(x)(seeresolve_tz()).- treat_number_as
(
character(1)) How to interpret numeric input:"seconds"or"milliseconds"since the Unix epoch,"days"since the Unix epoch, or"error"to reject numbers. Ignored for non-numeric input.- allow_null
(
logical(1)) Is NULL an acceptable value?- allow_zero_length
(
logical(1)) Are zero-length vectors acceptable?- allow_na
(
logical(1)) Are NA values ok?- min_value
(
numeric(1)) The lowest allowed value forx. IfNULL(default) values are not checked.- max_value
(
numeric(1)) The highest allowed value forx. IfNULL(default) values are not checked.- allowed_values
A vector of permitted values (converted to the target type).
NULL(default) skips the check.NAvalues inxare permitted independently ofallowed_values, subject toallow_na.- accepted_datetime_formats
(
character)strptime()-style format strings to try, in order, when parsing a characterx. The first format that parses every non-NAelement ofxis used; if none do, the result (and any error) is based on the first format tried. Defaults tolocale_datetime_formats(), which starts with the unambiguous RFC 3339 shape ("%Y-%m-%d", optionally with a time-of-day component) before falling back to the current locale's conventional date order.- named
Controls the names of
x.NULL(default),NA, orcharacter(0)skip the check.TRUErequires every element to have a non-empty name;FALSErequires that no elements are named. A character vector (or factor) requiresxto be named, with every name in the vector. A single stabilizer or conversion function (such asstabilize_chr(), ato_*function, or the result ofspecify_chr()) requiresxto be named and is applied tonames(x), so every name must satisfy it.- x_arg
(
character(1)) The name of the object being stabilized to use in error messages. The automatic value will work in most cases, or pass it through from higher-level functions to make error messages clearer in unexported functions.- call
(environment)The execution environment to mention as the source of error messages.- x_class
(
character(1)) The class name of the object being stabilized to use in error messages. Use this if you remove a special class from the object before checking its conversion, but want the error message to match the original class.
Value
The input as a length-1 base::Date vector, or an error condition
with classes <stbl-error>, <stbl-condition>, <rlang_error>,
<error>, <condition>, and a specific class by failure mode:
<stbl-error-coerce-date>whenxcannot be converted to date.<stbl-error-incompatible_values-date>when some values cannot be safely converted to date.<stbl-error-bad_null>forNULLvalues whenallow_null = FALSE.<stbl-error-bad_empty>for empty vectors whenallow_zero_length = FALSE.<stbl-error-non_scalar>for non-scalar vectors.<stbl-error-bad_na>forNAvalues whenallow_na = FALSE.<stbl-error-bad_named>when the presence of names doesn't matchnamed.<stbl-error-allowed_names>when names are not innamed.<stbl-error-outside_range>when values fall outsidemin_valueormax_value.<stbl-error-allowed_values>when the value is not inallowed_values.
See also
Other date functions:
locale_datetime_formats(),
specify_date(),
stabilize_date(),
to(),
to_date(),
to_date_scalar()
Other stabilization functions:
assert_contains(),
assert_not(),
assert_present(),
stabilize_all_of(),
stabilize_any_of(),
stabilize_arg(),
stabilize_chr(),
stabilize_chr_scalar(),
stabilize_date(),
stabilize_dbl(),
stabilize_dbl_scalar(),
stabilize_df(),
stabilize_dttm(),
stabilize_dttm_scalar(),
stabilize_dur(),
stabilize_dur_scalar(),
stabilize_fct(),
stabilize_fct_scalar(),
stabilize_int(),
stabilize_int_scalar(),
stabilize_lgl(),
stabilize_lgl_scalar(),
stabilize_lst(),
stabilize_one_of(),
stabilize_time(),
stabilize_time_scalar(),
to_chr(),
to_chr_scalar(),
to_date(),
to_date_scalar(),
to_dbl(),
to_dbl_scalar(),
to_dttm(),
to_dttm_scalar(),
to_dur(),
to_dur_scalar(),
to_fct(),
to_fct_scalar(),
to_int(),
to_int_scalar(),
to_lgl(),
to_lgl_scalar(),
to_time(),
to_time_scalar()
Examples
stabilize_date_scalar(as.Date("2024-01-01"))
#> [1] "2024-01-01"
stabilize_date_scalar("2024-01-01")
#> [1] "2024-01-01"
try(stabilize_date_scalar(c("2024-01-01", "2024-01-02")))
#> Error in eval(expr, envir) :
#> `c("2024-01-01", "2024-01-02")` must be a single <Date>.
#> ✖ `c("2024-01-01", "2024-01-02")` has 2 values.
try(stabilize_date_scalar(NULL))
#> Error in eval(expr, envir) : `NULL` must not be <NULL>.
stabilize_date_scalar(NULL, allow_null = TRUE)
#> NULL