source causes R to accept its input from the named file or URL or connection or expressions directly. Input is read and parsed from that file until the end of the file is reached, then the parsed expressions are evaluated sequentially in the chosen environment. withAutoprint(exprs) is a wrapper for source(exprs = exprs, ..) with different defaults. Its main purpose is to evaluate and auto-print expressions as if in a toplevel context, e.g, as in the R console.
source(file, local = FALSE, echo = verbose, print.eval = echo,
exprs, spaced = use_file,
verbose = getOption("verbose"),
prompt.echo = getOption("prompt"),
max.deparse.length = 150, width.cutoff = 60L,
deparseCtrl = "showAttributes",
chdir = FALSE,
encoding = getOption("encoding"),
continue.echo = getOption("continue"),
skip.echo = 0, keep.source = getOption("keep.source"))<p></p><p>withAutoprint(exprs, evaluated = FALSE, local = parent.frame(),
print. = TRUE, echo = TRUE, max.deparse.length = Inf,
width.cutoff = max(20, getOption("width")),
deparseCtrl = c("keepInteger", "showAttributes", "keepNA"),
…)</p>
| Parameter | Description |
|---|---|
file |
a connection or a character string giving the pathname of the file or URL to read from. "" indicates the connection stdin(). |
local |
TRUE, FALSE or an environment, determining where the parsed expressions are evaluated. FALSE (the default) corresponds to the user's workspace (the global environment) and TRUE to the environment from which source is called. |
echo |
logical; if TRUE, each expression is printed after parsing, before evaluation. |
print.eval, print. |
logical; if TRUE, the result of eval(i) is printed for each expression i; defaults to the value of echo. |
exprs |
for source() and withAutoprint(*, evaluated=TRUE): instead of specifying file, an expression, call, or list of call's, but not an unevaluated “expression”. for withAutoprint() (with default evaluated=FALSE): one or more unevaluated “expressions”. |
evaluated |
logical indicating that exprs is passed to source(exprs= *) and hence must be evaluated, i.e., a formal expression, call or list of calls. |
spaced |
logical indicating if newline (hence empty line) should be printed before each expression (when echo = TRUE). |
verbose |
if TRUE, more diagnostics (than just echo = TRUE) are printed during parsing and evaluation of input, including extra info for each expression. |
prompt.echo |
character; gives the prompt to be used if echo = TRUE. |
max.deparse.length |
integer; is used only if echo is TRUE and gives the maximal number of characters output for the deparse of a single expression. |
width.cutoff |
integer, passed to deparse() which is used (only) when there are no source references. |
deparseCtrl |
character vector, passed as control to deparse(), see also .deparseOpts. In R version <= 3.3.x, this was hardcoded to "showAttributes", which is the default currently; deparseCtrl = "all" may be preferable, when strict back compatibility is not of importance. |
chdir |
logical; if TRUE and file is a pathname, the R working directory is temporarily changed to the directory containing file for evaluating. |
encoding |
character vector. The encoding(s) to be assumed when file is a character string: see file. A possible value is "unknown" when the encoding is guessed: see the ‘Encodings’ section. |
continue.echo |
character; gives the prompt to use on continuation lines if echo = TRUE. |
skip.echo |
integer; how many comment lines at the start of the file to skip if echo = TRUE. |
keep.source |
logical: should the source formatting be retained when echoing expressions, if possible? |
… |
(for withAutoprint():) further (non-file related) arguments to be passed to source(.). |
# NOT RUN {
someCond <- 7 > 6
## want an if-clause to behave "as top level" wrt auto-printing :
## (all should look "as if on top level", e.g. non-assignments should print:)
if(someCond) withAutoprint({
x <- 1:12
x-1
(y <- (x-5)^2)
z <- y
z - 10
})
## If you want to source() a bunch of files, something like
## the following may be useful:
sourceDir <- function(path, trace = TRUE, ...) {
for (nm in list.files(path, pattern = "[.][RrSsQq]$")) {
if(trace) cat(nm,":")
source(file.path(path, nm), ...)
if(trace) cat("\n")
}
}
suppressWarnings( rm(x,y) ) # remove 'x' or 'y' from global env
withAutoprint({ x <- 1:2; cat("x=",x,"\n"); y <- x^2 })
## x and y now exist:
stopifnot(identical(x, 1:2), identical(y, x^2))
withAutoprint({ formals(sourceDir); body(sourceDir) },
max.dep = 20, verbose = TRUE)
# }
# NOT RUN {
<!-- %% --> tests in ../../../../tests/eval-etc.R -->
# }