R/def.R
def.Rd
This function makes sure that a vector of a given mode and
length is returned. If the value provided is NULL
, or empty, the default
value is used instead. If length.out = NULL
, the length of the vector is
not constrained, otherwise, it is fixed (possibly cutting or recycling
value
).
def(value, default = "", mode = "character", length.out = NULL)
The value to pass with default.
The default value to use, in case of NULL
, or
length(value) == 0
.
The mode of the resulting object: 'character', 'logical',
'numeric' (and, if you want to be more precise: 'double', 'integer' or
'single') or 'complex'. Although not being a mode by itself, you can also
specify 'factor' to make sure the result is a factor (thus, of mode
'numeric', storage mode 'integer', with a levels attribute). Other modes are
ignored, and value
is NOT coerced (silently) in this case, i.e., if you
don't want to force coercion of the resulting object, use anything else.
The desired length of the returned vector; use
length.out = NULL
(default) if you don't want to change the length of the
vector.
A vector of given mode and length, with either value
or default
.
def(1:3, length.out = 5) # Convert into character and recycle
#> [1] "1" "2" "3" "1" "2"
def(0:2, mode = "logical") # Numbers to logical
#> [1] FALSE TRUE TRUE
def(c("TRUE", "FALSE"), mode = "logical") # Text to logical
#> [1] TRUE FALSE
def(NULL, "default text") # Default value used
#> [1] "default text"
def(character(0), "default text") # Idem
#> [1] "default text"
def(NA, 10, mode = "numeric", length.out = 2) # Vector of two numbers
#> [1] NA NA