Various pems.utils workhorse functions for input checking and routine data handling.
checkOption(option=NULL, allowed.options=NULL,
option.name = "option", allowed.options.name = "allowed.options",
partial.match=TRUE, fun.name = "checkOption",
if.missing = c("stop", "warning", "return"),
output = c("option", "test.result"), ...)checkPEMS(data = NULL, fun.name = "checkPEMS",
if.missing = c("return", "warning", "stop"),
output = c("pems", "data.frame", "test.result"),
...)
checkUnits(input = NULL, units = NULL, data = NULL,
input.name = NULL, fun.name = "checkUnits",
if.missing = c("stop", "warning", "return"),
output = c("special", "units", "input", "test.result"),
..., unit.conversions = NULL)
checkOutput(input = NULL, data = NULL,
input.name = NULL, fun.name = "checkOutput",
if.missing = c("stop", "warning", "return"),
output = c("pems", "data.frame", "input", "test.result"),
overwrite = FALSE, ...)
checkIfMissing(..., if.missing = c("stop", "warning", "return"),
reply = NULL, suggest = NULL, if.warning = NULL,
fun.name = NULL)
All check...
functions return a logical if output = "test.result"
, TRUE
if the input
, option
, etc., is suitable for use in that fashion or FALSE
if not.
Otherwise,
checkOption
return the option
argument if valid (on the basis of if.missing
) or an
error, warning and/or NULL
(on the basis of if.missing
) if not. If partial.match = TRUE
and partial matching is possible this is in the full form given in allowed.options
regardless of
the degree of abbreviation used by the user.
checkPEMS
returns the data
argument if valid or an error, warning and/or NULL
(on the basis
of if.missing
) if not. Depending on output
setting, the valid return is either a data.frame
or pems
object.
checkUnits
returns the units of the input
argument if no other information is supplied and
units
have previously been assigned to that input
. If units
are assigned in the call
or output
is forced (output = "input"
), the input
is returned in the requested
units
. If this action is not possible (e.g. pems.utils
does not know the conversion), the
function returns an error, a warning and the unchanged input
or the unchanged input
alone
depending on if.missing
setting.
Depening on if.missing
argument, checkIfMissing
either stops all parent functions with an error
message, warns of a problem but allows parent functions to continue running, or allows parent functions to
continue without informing the user.
(vector, object or object element) An input to be tested or recovered for
subsequent use by another function, e.g. a speed measurement from a pems
object.
(data.frame, pems object) If supplied, the assumed source for an input
. This
can currently be a standard data.frame
or a 'pems' object
. Note: if an
input
is not found in data
, the parent environment is then also
checked before returning an error message.
(Optional character vectors) If a check...
function is used as a workhorse by
another function, the name it is given in any associated error messaging. See Note below.
(Optional character vector) If a check...
function is used as a workhorse routine
within another function, the name of that other function to be used in any associated error
messaging. See Note below.
(Optional character vector) How to handle an input, option, etc, if missing, not supplied or NULL
.
Current options include: "stop"
to stop the check...
function and any parent function
using it with an error message; "warning"
to warn users that expected information was missing
but to continue running the parent code; or "return"
to continue running the parent code
without any warnings.
(Character vector) Output mode for check...
function results. Options typically include the
check type
and "test.results"
. See Value below.
(Optional) Other arguments, currently ignored by all check...
functions expect checkIfMissing
.
(Character vectors) For checkOption
, option
and allowed.options
are the supplied option,
and the allowed options it should be one of, respectively, and allowed.options.name
if way these allowed
options should be identified in any associated error messaging. See Note below.
(Logical) For checkOption
, should partial matching be used when comparing option
and
allowed.options
.
(Character vector) For checkUnits
, the units to return input
in, if requested
(output = "input"
). Note: The default, output = "special"
, is a special case which
allows checkUnits
to return either the units if they are not set in the call (equivalent to
output = "units"
) or the input
in the requested units if they are set in the call
(equivalent to output = "input"
).
(List) For checkUnits
, the conversion method source. See ref.unit.conversions
and
convertUnits
for further details.
(Logical) For checkOutput
, when packing/repacking a data.frame
or pems
object,
should 'same name' cases be overwritten? If FALSE
and 'same names' are encountered, e.g. when
modifying an existing data.frame
or pems
element, a new element if generated with a
unique name in the form [name].[number]
.
(Character vectors) For checkIfMissing
, when generating error or warning messages, the main
reply/problem description, any suggestions what users can try to fix this, and the action taken by the
function if just warning (e.g. setting the missing value to NULL
), respectively. All are options.
Karl Ropkins
The check...
functions are intended as a means of future-proofing pems.utils
data
handling. They provide routine error/warning messaging and consistent 'front-of-house' handling
of function arguments regardless of any underlying changes in the structure of the pems
objects and/or pems.utils
code. This means third-party function developed using these
functions should be highly stable.
checkOption
checks a supplied option against a set of allowed options, and then if present or
matchable returns the assigned option. It is intended as a workhorse for handling optional function
arguments.
checkPEMS
checks a supplied data source and provides a short-cut for converting this
to and from data.frames
and pems
object classes. It is intended as a 'best-of-both-worlds'
mechanism, so users can supply data in various different formats, but function developers only
have to work with that data in one (known) format.
checkUnits
checks the units of a previously recovered input
, and then, depending on the
output
setting, returns either the units
of the input
or the input
in the
required units
(assuming the associated conversion is known).
checkOutput
packs/repacks a previously recovered input
. Depending on the output
setting, this
can be as the (standalone) input
, an element of a data.frame
or an element of a pems
object.
checkIfMissing
if a workhorse function for the if.missing
argument. If any of the supplied
additional arguments are NULL
, it stops, warns and continues or continues a parent function according to
the if.missing
argument. If supplied, reply
, suggest
and if.warning
arguments are
used to generate the associated error or warning message.
[TO DO]
See ref.unit.conversions
and convertUnits
for general unit handling.