reload.or.compute
Compute Unless Previously Saved
If the designated file does not yet exist, evaluate the expression and save the results in the file. If the file already exists, re-load the results from the file.
- Keywords
- utilities
Usage
reload.or.compute(filename, expr, objects = NULL,
destination = parent.frame(), force=FALSE)
Arguments
- filename
Name of data file. A character string.
- expr
R language expression to be evaluated.
- objects
Optional character vector of names of objects to be saved in
filename
after evaluatingexpr
, or names of objects that should be present infilename
when loaded.- destination
Environment in which the resulting objects should be assigned.
- force
Logical value indicating whether to perform the computation in any case.
Details
This facility is useful for saving, and later re-loading, the results of
time-consuming computations. It would typically be
used in an R script file or an Sweave
document.
If the file called filename
does not yet exist,
then expr
will be evaluated
and the results will be saved in filename
.
The optional argument objects
specifies which results should be saved
to the file: the default is to save all objects that were created
by evaluating the expression.
If the file called filename
already exists, then it
will be loaded.
The optional argument objects
specifies the names
of objects that should be present in the file; a warning is issued
if any of them are missing.
The resulting objects can be assigned into any desired destination
.
The default behaviour is equivalent to evaluating expr
in the current environment.
If force=TRUE
then expr
will be evaluated
(regardless of whether the file already exists or not)
and the results will be saved in filename
, overwriting
any previously-existing file with that name. This is a convenient
way to force the code to re-compute everything
in an R script file or Sweave
document.
Value
Character vector (invisible) giving the names of the objects computed or loaded.
Examples
# NOT RUN {
# }
# NOT RUN {
if(FALSE) {
reload.or.compute("mydata.rda", {
x <- very.long.computation()
y <- 42
})
}
# }