【问题标题】:Questions of search() functionsearch() 函数的问题
【发布时间】:2018-06-22 16:18:22
【问题描述】:

在了解了 search() 函数后,我有一些基本但至关重要的问题。 我想回答包、GlobalEnv、工作目录和工作区之间的准确含义和关系。

当我使用该功能时,它会说,

搜索() [1] ".GlobalEnv" "Autoloads" "package:base"

其中“.GlobalEnv”是工作区。几个站点说工作区与工作目录相同。我想知道“.GlobalEnv”是否与

的结果相同

getwd()

代码。另外我想知道像“Base”这样的所有包是否都包含在“.GlobalEnv”中或存储在其他地方。

【问题讨论】:

标签: r function directory packages workspace


【解决方案1】:

无论如何,不​​确定这是否完全回答了您的问题:

.GlobalEnv是用户的工作区,与工作目录不同。它是用户定义的对象积累的地方。来自函数environment()的帮助页面:

全球环境.GlobalEnv,通常称为用户的 工作区,是搜索路径上的第一项。它也可以 由globalenv() 访问。

来自R language definition,环境定义:

环境可以被认为是由两部分组成:一个框架, 它是一组符号值对和一个外壳,一个指向 一个封闭的环境。当 R 查找符号的值时 检查框架,如果找到匹配的符号,其值将是 回来。如果不是,则访问封闭环境并且 过程重复。环境形成一个树形结构,其中 围栏扮演着父母的角色。环境树是 植根于一个空的环境,可通过emptyenv()获得,它 没有父母。

基本包不包含在.GlobalEnv 中,而是在称为.BaseNamespaceEnv 的不同环境中,也可以通过baseenv() 访问。您可以通过比较ls(globalenv())s(baseenv()) 的输出来验证这两个环境是否包含不同的对象。

当 R 查找某些东西时,它会从全局环境中开始,如果在那里找不到,它会向上移动到封闭 (parent) 环境,依此类推。如果您使用 parent.env() 函数跟踪整个父环境链,您将看到最后搜索基本包,在任何其他加载的包之后和空环境之前(不能分配任何内容)。

e_ <- .GlobalEnv
while( !identical(e_, emptyenv()) )
{ 
    e_ <- parent.env(e_)
    print(e_)
}

【讨论】:

    猜你喜欢
    • 2011-09-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多