Evaluate an expression if its value is not already cached.
Cache the evaluation of an expression in the file system.
cache(expr, dir=".", prefix="tmp_R_cache_")
expr |
An expression of the form |
dir |
A string specifying the directory into which cache files should be written (also where to go searching for an appropriate cache file). |
prefix |
A string giving the prefix to use when naming and
searching for cache files. The default is |
This function can be useful during the development of computationally
intensive workflows, for example in vignettes or scripts. The
function uses a cache file in 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.
The (cached) value of expr
.
The first version of this function had a slightly different interface
which is no longer functional. The old version has arguments
name
and expr
and the intended usage is: foo <-
cache("foo", expr)
.
Wolfgang Huber, huber@ebi.ac.uk Seth Falcon, sfalcon@fhcrc.org
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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.