View source: R/suppliedElsewhere.R
| suppliedElsewhere | R Documentation |
When loading objects into a simList, especially during the
simInit call, and inside the .inputObjects functions of modules,
it is often useful to know if an object in question will or has been
by the user via the inputs or objects arguments, or by another
module's .inputObjects while preparing its expected inputs (via
expectsInputs in metadata), or if it will be supplied by another
module during its "init" event. In all these cases, it may not
be necessary for a given module to load any default value for its expectsInputs.
This function can be used as a check to determine whether the module needs
to proceed in getting and assigning its default value.
suppliedElsewhere(
object,
sim,
where = c("sim", "user", "initEvent"),
returnWhere = FALSE
)
object |
Character vector |
sim |
A |
where |
Character vector with one to three of |
returnWhere |
Logical, default |
where indicates which of three places to search, either "sim" i.e.,
the simList, which would be equivalent to is.null(sim\$objName), or
"user" which would be supplied by the user in the simInit function
call via outputs or inputs (equivalent to
(!('defaultColor' \%in\% sim$.userSuppliedObjNames))),
or "initEvent", which would test whether a module that gets loaded before
the present one will create it as part of its outputs (i.e., as indicated by
createsOutputs in that module's metadata). There is a caveat to this test,
however; if that other event also has the object as an expectsInput, then
it would fail this test, as it also needs it as an input.
This final one ("initEvent") does not explicitly test that the object will be created
in the "init" event, only that it is in the outputs of that module, and that it is a module
that is loaded prior to this one.
logical
mySim <- simInit()
suppliedElsewhere("test", mySim) # FALSE
# supplied in the simList
mySim$test <- 1
suppliedElsewhere("test", mySim) # TRUE
test <- 1
# supplied from user at simInit time -- note, this object would eventually get into the simList
# but the user supplied values come *after* the module's .inputObjects, so
# a basic is.null(sim$test) would return TRUE even though the user supplied test
mySim <- simInit(objects = list("test" = test))
suppliedElsewhere("test", mySim) # TRUE
# Example with prepInputs
# Put chunks like this in your .inputObjects
if (!suppliedElsewhere("test", mySim))
sim$test <- Cache(prepInputs, "raster.tif", "downloadedArchive.zip",
destinationPath = dataPath(sim), studyArea = sim$studyArea,
rasterToMatch = sim$otherRasterTemplate, overwrite = TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.