Parse and Evaluate Expressions from a File
Description
Parses expressions in the given file, and then successively evaluates them in the specified environment.
Usage
sys.source(file, envir = baseenv(), chdir = FALSE,
keep.source = getOption("keep.source.pkgs"),
keep.parse.data = getOption("keep.parse.data.pkgs"),
toplevel.env = as.environment(envir))
Arguments
file
a character string naming the file to be read from.
envir
an R object specifying the environment in which the
expressions are to be evaluated. May also be a list or an integer.
The default baseenv()
corresponds to evaluation in the base
environment. This is probably not what you want; you should
typically supply an explicit envir
argument, see the
‘Note’.
chdir
logical; if TRUE
, the R working directory is
changed to the directory containing file
for evaluating.
keep.source
logical. If TRUE
, functions keep
their source including comments, see
options(keep.source = *)
for more details.
keep.parse.data
logical. If TRUE
and keep.source
is
also TRUE
, functions keep parse data with their source, see
options(keep.parse.data = *)
for more details.
toplevel.env
an R environment to be used as top level while evaluating the expressions. This argument is useful for frameworks running package tests; the default should be used in other cases.
Details
For large files, keep.source = FALSE
may save quite a bit of
memory. Disabling only parse data via keep.parse.data = FALSE
can already save a lot.
Note on envir
In order for the code being evaluated to use the correct environment
(for example, in global assignments), source code in packages should
call topenv()
, which will return the namespace, if any,
the environment set up by sys.source
, or the global environment
if a saved image is being used.
See Also
source
, and loadNamespace
which
is called from library(.)
and uses sys.source(.)
.
Examples
## a simple way to put some objects in an environment
## high on the search path
tmp <- tempfile()
writeLines("aaa <- pi", tmp)
env <- attach(NULL, name = "myenv")
sys.source(tmp, env)
unlink(tmp)
search()
aaa
detach("myenv")