Patches installed and loaded packages and more.

# S3 method for default
patchCode(paths=NULL, recursive=TRUE, suppressWarnings=TRUE,
  knownExtensions=c("R", "r", "S", "s"), verbose=FALSE, ...)

Arguments

paths

The path to the directory (and subdirectories) which contains source code that will patch loaded packages. If NULL, the patch path is given by the option R_PATCHES, If the latter is not set, the system environment with the same name is used. If neither is given, then ~/R-patches/ is used.

recursive

If TRUE, source code in subdirectories will also get loaded.

suppressWarnings

If TRUE, warnings will be suppressed, otherwise not.

knownExtensions

A character vector of filename extensions used to identify source code files. All other files are ignored.

verbose

If TRUE, extra information is printed while patching, otherwise not.

...

Not used.

Value

Returns (invisibly) the number of files sourced.

Details

The method will look for source code files (recursively or not) that match known filename extensions. Each found source code file is then source()d.

If the search is recursive, subdirectories are entered if and only if either (1) the name of the subdirectory is the same as a loaded (and installed) package, or (2) if there is no installed package with that name. The latter allows common code to be organized in directories although it is still not assigned to packages.

Each of the directories given by argument paths will be processed one by one. This makes it possible to have more than one file tree containing patches.

To set an options, see options(). To set a system environment, see Sys.setenv(). The character ; is interpreted as a separator. Due to incompatibility with Windows pathnames, : is not a valid separator.

Author

Henrik Bengtsson

See also

Examples

if (FALSE) {
  # Patch all source code files in the current directory
  patchCode(".")

  # Patch all source code files in R_PATCHES
  options("R_PATCHES"="~/R-patches/")
  # alternatively, Sys.setenv("R_PATCHES"="~/R-patches/")
  patchCode()
}