R: Read R Code from a File or a Connection

source {base} | R Documentation

## Read R Code from a File or a Connection

### Description

`source` causes R to accept its input from the named file or URL (the name must be quoted) or connection. Input is read and `parse`d by from that file until the end of the file is reached, then the parsed expressions are evaluated sequentially in the chosen environment.

### 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"))

### Arguments

`file` | a connection or a character string giving the pathname of the file or URL to read from.
`local` | if `local` is `FALSE`, the statements scanned are evaluated in the user's workspace (the global environment), otherwise in the environment calling `source`.
`echo` | logical; if `TRUE`, each expression is printed after parsing, before evaluation.
`print.eval` | logical; if `TRUE`, the result of `eval(i)` is printed for each expression `i`; defaults to `echo`.
`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 length of the “echo” of a single expression.
`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 string. The encoding to be assumed when `file` is a character string: see `file`. A possible value is `"unknown"`: see the Details.

### Details

All versions of R accept input from a connection with end of line marked by LF (as used on Unix), CRLF (as used on DOS/Windows) or CR (as used on classic MacOS). The final line can be incomplete, that is missing the final EOL marker.

If `options`("keep.source") is true (the default), the source of functions is kept so they can be listed exactly as input. This imposes a limit of 128K bytes on the function size and a nesting limit of 265. Use `option(keep.source = FALSE)` when these limits might take effect: if exceeded they generate an error.

This paragraph applies if `file` is a filename (rather than a connection). If `encoding = "unknown"`, an attempt is made to guess the encoding. The result of `localeToCharset()` is used a guide. If `encoding` has two or more elements, they are tried in turn until the file/URL can be read without error in the trial encoding.

Unlike input from a console, lines in the file or on a connection can contain an unlimited number of characters. However, there is a limit of 8192 bytes on the size of character strings.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### See Also

`demo` which uses `source`; `eval`, `parse` and `scan`; `options("keep.source")`.

### 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,":")
           source(file.path(path, nm), ...)
           if(trace) cat("\n")
        }
     }

[Package base version 2.4.1 Index]