Current pre-defined units are found within the spadesTimes()
function.
The user can define a new unit.
The unit name can be anything, but the function definition must be of the
form "dunitName"
, e.g., dyear
or dfortnight
.
The unit name is the part without the d
and the function name
definition includes the d
.
This new function, e.g., dfortnight <- function(x) lubridate::duration(dday(14))
can be placed anywhere in the search path or in a module
(you will need to declare "lubridate"
in your pkgDeps
in the metadata).
This function takes a numeric with a "unit" attribute and converts it to
another numeric with a different time attribute.
If the units passed to argument units
are the same as
attr(time, "unit")
, then it simply returns input time
.
inSeconds(unit, envir, skipChecks = FALSE)convertTimeunit(time, unit, envir, skipChecks = FALSE)
.spadesTimes
spadesTimes()
checkTimeunit(unit, envir)
# S4 method for character,missing
checkTimeunit(unit, envir)
# S4 method for character,environment
checkTimeunit(unit, envir)
A numeric vector of length 1, with unit
attribute set to "seconds".
An object of class character
of length 12.
Character. One of the time units used in SpaDES
or user
defined time unit, given as the unit name only. See details.
An environment. This is where to look up the function definition for the time unit. See details.
For speed, the internal checks for classes and missingness can be skipped.
Default FALSE
.
Numeric. With a unit attribute, indicating the time unit of the input numeric. See Details.
Alex Chubaty & Eliot McIntire
Eliot McIntire
Because of R scoping, if envir
is a simList
environment, then
this function will search there first, then up the current search()
path.
Thus, it will find a user defined or module defined unit before a SpaDES unit.
This means that a user can override the dyear
given in SpaDES, for example,
which is 365.25 days, with dyear <- function(x) lubridate::duration(dday(365))
.
If time
has no unit
attribute, then it is assumed to be
seconds.