| % File src/library/utils/man/getFromNamespace.Rd |
| % Part of the R package, https://www.R-project.org |
| % Copyright 1995-2013 R Core Team |
| % Distributed under GPL 2 or later |
| |
| \name{getFromNamespace} |
| \alias{assignInNamespace} |
| \alias{assignInMyNamespace} |
| \alias{getFromNamespace} |
| \alias{fixInNamespace} |
| \title{Utility Functions for Developing Namespaces} |
| \description{ |
| Utility functions to access and replace the non-exported functions in |
| a namespace, for use in developing packages with namespaces. |
| |
| They should not be used in production code (except perhaps |
| \code{assignInMyNamespace}, but see the \sQuote{Note}). |
| } |
| \usage{ |
| getFromNamespace(x, ns, pos = -1, envir = as.environment(pos)) |
| |
| assignInNamespace(x, value, ns, pos = -1, |
| envir = as.environment(pos)) |
| |
| assignInMyNamespace(x, value) |
| |
| fixInNamespace(x, ns, pos = -1, envir = as.environment(pos), \dots) |
| } |
| \arguments{ |
| \item{x}{an object name (given as a character string).} |
| \item{value}{an \R object.} |
| \item{ns}{a namespace, or character string giving the namespace.} |
| \item{pos}{where to look for the object: see \code{\link{get}}.} |
| \item{envir}{an alternative way to specify an environment to look in.} |
| \item{\dots}{arguments to pass to the editor: see \code{\link{edit}}.} |
| } |
| \details{ |
| \code{assignInMyNamespace} is intended to be called from functions |
| within a package, and chooses the namespace as the environment of the |
| function calling it. |
| |
| The namespace can be specified in several ways. Using, for example, |
| \code{ns = "stats"} is the most direct, but a loaded package can be |
| specified via any of the methods used for \code{\link{get}}: \code{ns} |
| can also be the environment printed as \code{<namespace:foo>}. |
| |
| \code{getFromNamespace} is similar to (but predates) the |
| \code{\link{:::}} operator: it is more flexible in how the namespace |
| is specified. |
| |
| \code{fixInNamespace} invokes \code{\link{edit}} on the object named |
| \code{x} and assigns the revised object in place of the original |
| object. For compatibility with \code{fix}, \code{x} can be unquoted. |
| } |
| \section{Warning}{ |
| \code{assignInNamespace} should not be used in final code, and will in |
| future throw an error if called from a package. Already certain uses |
| are disallowed. |
| } |
| \note{ |
| \code{assignInNamespace}, \code{assignInMyNamespace} and |
| \code{fixInNamespace} change the copy in the namespace, but not any |
| copies already exported from the namespace, in particular an object of |
| that name in the package (if already attached) and any copies already |
| imported into other namespaces. They are really intended to be used |
| \emph{only} for objects which are not exported from the namespace. |
| They do attempt to alter a copy registered as an S3 method if one is |
| found. |
| |
| They can only be used to change the values of objects in the |
| namespace, not to create new objects. |
| } |
| \value{ |
| \code{getFromNamespace} returns the object found (or gives an error). |
| |
| \code{assignInNamespace}, \code{assignInMyNamespace} and |
| \code{fixInNamespace} are invoked for their side effect of changing |
| the object in the namespace. |
| } |
| |
| \seealso{ |
| \code{\link{get}}, \code{\link{fix}}, \code{\link{getS3method}} |
| } |
| \examples{ |
| getFromNamespace("findGeneric", "utils") |
| \dontrun{ |
| fixInNamespace("predict.ppr", "stats") |
| stats:::predict.ppr |
| getS3method("predict", "ppr") |
| ## alternatively |
| fixInNamespace("predict.ppr", pos = 3) |
| fixInNamespace("predict.ppr", pos = "package:stats") |
| }} |
| \keyword{data} |