loadCache.Rd
Loads data from file cache, which is unique for an optional key object.
# Default S3 method
loadCache(key=NULL, sources=NULL, suffix=".Rcache", removeOldCache=TRUE, pathname=NULL,
dirs=NULL, ..., onError=c("warning", "error", "message", "quiet", "print"))
An optional object from which a hexadecimal hash code will be generated and appended to the filename.
Optional source objects. If the cache object has a timestamp older than one of the source objects, it will be ignored and removed.
A character
string to be appended to the end of the
filename.
If TRUE
and the cache is older than the
sources
, the cache file is removed, otherwise not.
The pathname to the cache file. If specified,
arguments key
and suffix
are ignored. Note that
this is only needed in order to read a cache file for which
the key is unknown, for instance, in order to investigate
an unknown cache file.
A character
vector
constituting the path to the
cache subdirectory (of the cache root directory
as returned by getCacheRootPath
()) to be used.
If NULL
, the path will be the cache root path.
Not used.
A character
string specifying what the action is
if an exception is thrown.
Returns an R object or NULL
, if cache does not exist.
The hash code calculated from the key
object is a
32 characters long hexadecimal MD5 hash code.
For more details, see getChecksum
().
saveCache
().
simulate <- function(mean, sd) {
# 1. Try to load cached data, if already generated
key <- list(mean, sd)
data <- loadCache(key)
if (!is.null(data)) {
cat("Loaded cached data\n")
return(data);
}
# 2. If not available, generate it.
cat("Generating data from scratch...")
data <- rnorm(1000, mean=mean, sd=sd)
Sys.sleep(1) # Emulate slow algorithm
cat("ok\n")
saveCache(data, key=key, comment="simulate()")
data;
}
data <- simulate(2.3, 3.0)
#> Generating data from scratch...ok
data <- simulate(2.3, 3.5)
#> Generating data from scratch...ok
data <- simulate(2.3, 3.0) # Will load cached data
#> Loaded cached data
# Clean up
file.remove(findCache(key=list(2.3,3.0)))
#> [1] TRUE
file.remove(findCache(key=list(2.3,3.5)))
#> [1] TRUE