
Last chance! 50% off unlimited learning
Sale ends in
cache(expr, dir=".", prefix="tmp_R_cache_")
LHS <- RHS
, Where
LHS
is a variable name, RHS
is any valid expression,
and <-
must be used (=
will not work)."tmp_R_cache_"
expr
.
name
and expr
and the intended usage is: foo <-
cache("foo", expr)
. dir
which defaults to the current
working directory whose name is obtained by paste(prefix, name,
".RData", sep="")
.
When cache
is called and the cache file exists, it is loaded
and the object whose name is given on the left of <-
in
expr
is returned. In this case, expr
is not
evaluted. When cache
is called and the cache file does not exist,
expr
is evaluted, its value is saved into a cache file, and
then its value is returned.
The expr
argument must be of the form of someVar <-
{expressions}
. That is, the left hand side must be a single symbol
name and the next syntactic token must be <-
.
To flush the cache and force recomputation, simply remove the cache
files. You can use file.remove
to do this.
bigCalc <- function() runif(10)
cache(myComplicatedObject <- bigCalc())
aCopy <- myComplicatedObject
remove(myComplicatedObject)
cache(myComplicatedObject <- bigCalc())
stopifnot(all.equal(myComplicatedObject, aCopy))
allCacheFiles <-
list.files(".", pattern="^tmp_R_cache_.*\\.RData$", full.name=TRUE)
file.remove(allCacheFiles)
Run the code above in your browser using DataLab