cache {Biobase} | R 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)

[Package Biobase version 2.40.0 Index]