cache: Evaluate an expression if its value is not already cached.

View source: R/tools.R

cacheR Documentation

Evaluate an expression if its value is not already cached.

Description

Cache the evaluation of an expression in the file system.

Usage

    cache(expr, dir=".", prefix="tmp_R_cache_")

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_"

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 no longer functional. The old version has arguments name and expr and the intended usage is: foo <- cache("foo", expr).

Author(s)

Wolfgang Huber, huber@ebi.ac.uk Seth Falcon, sfalcon@fhcrc.org

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)

Bioconductor/Biobase documentation built on Nov. 2, 2024, 6:31 a.m.