View source: R/objectSynonyms.R
objectSynonyms | R Documentation |
simList
This will create active bindings amongst the synonyms. To minimize copying,
the first one that exists in the character vector will become the "canonical"
object. All others named in the character vector will be activeBindings
to
that canonical one. This synonym list will be assigned to the envir
,
as an object named objectSynonyms
. That object will have an attribute
called, bindings
indicating which one is the canonical one and which
is/are the activeBindings.
EXPERIMENTAL: If the objects are removed during a
spades
call by, say, a module, then at the end of the event, the
spades
call will replace the bindings. In other words, if a module
deletes the object, it will "come back". This may not always be desired.
objectSynonyms(envir, synonyms)
envir |
An environment, which in the context of SpaDES.core is usually
a |
synonyms |
A list of synonym character vectors, such as
|
This is very experimental and only has minimal tests. Please report if this is not working, and under what circumstances (e.g., please submit a reproducible example to our issues tracker)
This function will append any new objectSynonym
to any pre-existing
objectSynonym
in the envir
. Similarly, this function assumes
transitivity, i.e., if age
and ageMap
are synonyms, and ageMap
and timeSinceFire
are synonyms, then age
and timeSinceFire
must be synonyms.
Active bindings in the envir
so that all synonyms point to the same
canonical object, e.g., they would be at envir[[synonym[[1]][1]]]
and
envir[[synonym[[1]][2]]]
, if a list of length one is passed into
synonyms
, with a character vector of length two. See examples.
sim <- simInit()
sim$age <- 1:10;
sim <- objectSynonyms(sim, list(c("age", "ageMap")))
identical(sim$ageMap, sim$age)
sim$age <- 4
identical(sim$ageMap, sim$age)
sim$ageMap <- 2:5
sim$ageMap[3] <- 11
identical(sim$ageMap, sim$age)
# Also works to pass it in as an object
objectSynonyms <- list(c("age", "ageMap"))
sim <- simInit(objects = list(objectSynonyms = objectSynonyms))
identical(sim$ageMap, sim$age) # they are NULL at this point
sim$age <- 1:10
identical(sim$ageMap, sim$age) # they are not NULL at this point
## More complicated, with 'updating' i.e., you can add new synonyms to previous
sim <- simInit()
os <- list(c("age", "ageMap"), c("vegMap", "veg"), c("studyArea", "studyArea2"))
os2 <- list(c("ageMap", "timeSinceFire", "tsf"),
c("systime", "systime2"),
c("vegMap", "veg"))
sim <- objectSynonyms(sim, os)
sim <- objectSynonyms(sim, os2)
# check
sim$objectSynonyms
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.