Rev 49852 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/source.Rd% Part of the R package, http://www.R-project.org% Copyright 1995-2008 R Core Development Team% Distributed under GPL 2 or later\name{source}\title{Read R Code from a File or a Connection}\usage{source(file, local = FALSE, echo = verbose, print.eval = echo,verbose = getOption("verbose"),prompt.echo = getOption("prompt"),max.deparse.length = 150, chdir = FALSE,encoding = getOption("encoding"),continue.echo = getOption("continue"),skip.echo = 0, keep.source = getOption("keep.source"))}\alias{source}\arguments{\item{file}{a connection or a character string giving the pathnameof the file or URL to read from. \code{""} indicates the connection\code{\link{stdin}()}.}\item{local}{if \code{local} is \code{FALSE}, the statements scannedare evaluated in the user's workspace (the global environment),otherwise in the environment calling \code{source}.}\item{echo}{logical; if \code{TRUE}, each expression is printedafter parsing, before evaluation.}\item{print.eval}{logical; if \code{TRUE}, the result of\code{eval(i)} is printed for each expression \code{i}; defaultsto the value of \code{echo}.}\item{verbose}{if \code{TRUE}, more diagnostics (than just\code{echo = TRUE}) are printed during parsing and evaluation ofinput, including extra info for \bold{each} expression.}\item{prompt.echo}{character; gives the prompt to be used if\code{echo = TRUE}.}\item{max.deparse.length}{integer; is used only if \code{echo} is\code{TRUE} and gives the maximal number of characters output forthe deparse of a single expression.}\item{chdir}{logical; if \code{TRUE} and \code{file} is a pathname,the \R working directory is temporarily changed to the directorycontaining \code{file} for evaluating.}\item{encoding}{character vector. The encoding(s) to be assumed when\code{file} is a character string: see \code{\link{file}}. Apossible value is \code{"unknown"} when the encoding is guesses: seethe \sQuote{Details}.}\item{continue.echo}{character; gives the prompt to use oncontinuation lines if \code{echo = TRUE}.}\item{skip.echo}{integer; how many comment lines at the start of thefile to skip if \code{echo = TRUE}.}\item{keep.source}{logical: should the source formatting be retainedwhen echo expressions, if possible?}}\description{\code{source} causes \R to accept its input from the named file or URL(the name must be quoted) or connection. Input is read and\code{\link{parse}}d by from that file until the end of the file isreached, then the parsed expressions are evaluated sequentially in thechosen environment.}\details{Note that running code via \code{source} differs in a few respectsfrom entering it at the \R command line. Since expressions are notexecuted at the top level, auto-printing is not done. So you willneed to include explicit \code{print} calls for things you want to beprinted (and remember that this includes plotting by \pkg{lattice},FAQ Q7.22). Since the complete file is parsed before any of it isrun, syntax errors result in none of the code being run. If an erroroccurs in running a syntactically correct script, anything assignedinto the workspace by code that has been run will be kept (just asfrom the command line), but diagnostic information such as\code{\link{traceback}()} will contain additional calls to\code{eval.with.vis}, an undocumented internal function.All versions of \R accept input from a connection with end of linemarked by LF (as used on Unix), CRLF (as used on DOS/Windows) or CR(as used on classic Mac OS) and map this to newline. The final linecan be incomplete, that is missing the final end-of-line marker.If \code{\link{options}}("keep.source") is true (the default ininteractive use), the source of functions is kept so they can belisted exactly as input. This imposes a limit of 128K bytes on thefunction size and a nesting limit of 265. Use \code{keep.source =FALSE} when these limits might take effect: if exceeded they generatean error.This paragraph applies if \code{file} is a filename (rather than aconnection). If \code{encoding = "unknown"}, an attempt is made toguess the encoding. The result of \code{\link{localeToCharset}()} isused as a guide. If \code{encoding} has two or more elements, theyare tried in turn until the file/URL can be read without error in thetrial encoding. If an actual \code{encoding} is specified (rather than thedefault or \code{"unknown"}) then character strings in the result will betranslated to the current encoding and marked as such (see\code{\link{Encoding}}) in Latin-1 and UTF-8 locales.If \code{file} is a connection (including one specified by \code{""},it is not possible to re-encode the input inside \code{source}, and sothe \code{encoding} argument is just used to mark character strings in theparsed input: see \code{\link{parse}}.Unlike input from a console, lines in the file or on a connection cancontain an unlimited number of characters.When \code{skip.echo > 0}, that many comment lines at the start ofthe file will not be echoed. This does not affect the execution ofthe code at all. If there are executable lines within the first\code{skip.echo} lines, echoing will start with the first of them.If \code{echo} is true and a deparsed expression exceeds\code{max.deparse.length}, that many characters are output followed by\code{ .... [TRUNCATED] }.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth & Brooks/Cole.}\seealso{\code{\link{demo}} which uses \code{source};\code{\link{eval}}, \code{\link{parse}} and \code{\link{scan}};\code{\link{options}("keep.source")}.\code{\link{sys.source}} which is a streamlined version to source afile into an environment.}\examples{## 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,":") % ^^^^ doubled in *.Rd filesource(file.path(path, nm), ...)if(trace) cat("\n")}}}\keyword{file}\keyword{programming}\keyword{connection}