Learn R Programming

base (version 3.4.1)

ns-internals: Namespace Internals

Description

Internal namespace support functions. Not intended to be called directly, and only visible because of the special nature of the base namespace.

Usage

asNamespace(ns, base.OK = TRUE)
getNamespaceInfo (ns, which)
.getNamespaceInfo(ns, which)
importIntoEnv(impenv, impnames, expenv, expnames)
isBaseNamespace(ns)
isNamespace(ns)
namespaceExport(ns, vars)
namespaceImport(self, …, from = NULL, except = character(0L))
namespaceImportFrom(self, ns, vars, generics, packages,
                    from = "non-package environment",
                    except = character(0L))
namespaceImportClasses(self, ns, vars, from = NULL)
namespaceImportMethods(self, ns, vars, from = NULL)
packageHasNamespace(package, package.lib)
parseNamespaceFile(package, package.lib, mustExist = TRUE)
registerS3method(genname, class, method, envir = parent.frame())
registerS3methods(info, package, env)
setNamespaceInfo(ns, which, val)
.mergeExportMethods(new, ns)
.mergeImportMethods(impenv, expenv, metaname)
.knownS3Generics
loadingNamespaceInfo()
.getNamespace(name)
..getNamespace(name, where)

Arguments

ns

string or namespace environment.

base.OK

logical.

impenv

environment.

expenv

namespace environment.

vars

character vector.

generics

optional character vector.

self

namespace environment.

package

string naming the package/namespace to load.

packages

vector of package names parallel to generics.

package.lib

character vector specifying library.

mustExist

logical.

genname

character.

class

character.

envir, env

environment.

info

a 3-column character matrix.

which

character.

val

any object.

character arguments.

metaname

the methods table name.

name

symbol: name of namespace

except

character vector naming symbols to exclude from the import, particularly useful when vars is missing.

Details

packageHasNamespace does not indicate if the package has a namespace (all now do), rather if it has a NAMESPACE file, which base and some legacy packages do not. But then you are not intended to be using it ….

See Also

loadNamespace or getNamespace are somewhat higher level namespace related functions.

Examples

Run this code
nsName <- "stats"
(ns <- asNamespace(nsName)) # <environment: namespace:stats>

## Inverse function of asNamespace() :
environmentName(asNamespace("stats")) # "stats"
environmentName(asNamespace("base"))  # "base"
getNamespaceInfo(ns, "spec")[["name"]] ## -> "stats"


## Only for for the daring ones, trying to get into the bowels :

lsNamespaceInfo <- function(ns, ...) {
    ns <- asNamespace(ns, base.OK = FALSE)
    ls(..., envir = get(".__NAMESPACE__.", envir = ns, inherits = FALSE))
}
allinfoNS <- function(ns) sapply(lsNamespaceInfo(ns), getNamespaceInfo, ns=ns)

utils::str(allinfoNS("stats"))
utils::str(allinfoNS("stats4"))

Run the code above in your browser using DataLab