cache

Evaluate an expression if its value is not already cached.

Cache the evaluation of an expression in the file system.

Keywords
manip, array
Usage
cache(expr, dir=".", prefix="tmp_R_cache_", name)
Arguments
expr
An expression of the form LHS <- RHS, Where LHS is a variable name, RHS is any valid expression, and <- must be used (= will not work).
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 "tmp_R_cache_"
name
Unused. This argument is present as a compatibility layer for the deprecated calling convention.
Details

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.

Value

The (cached) value of expr.

Note

The first version of this function had a slightly different interface which is now deprecated (but still functional). The old version has arguments name and expr and the intended usage is: foo <- cache("foo", expr).

Aliases
  • cache
Examples
    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)
Documentation reproduced from package Biobase, version 2.26.0, License: Artistic-2.0

Community examples

Looks like there are no examples yet.