search()函数的问题

search()函数的问题,r,function,directory,packages,workspace,R,Function,Directory,Packages,Workspace,在学习了search()函数之后,我有一些基本但关键的问题。 我想知道包、GlobalEnv、工作目录和工作区之间的准确含义和关系 当我使用这个函数时,它说 搜索() [1] .GlobalEnv“自动加载”包:基本 其中“.GlobalEnv”是工作区。有几个网站说工作区与工作目录相同。我想知道“.GlobalEnv”是否与 getwd() 代码。我还想知道像“Base”这样的所有包是包含在“.GlobalEnv”中还是存储在其他地方 无论如何,我不确定这是否完全回答了您的问题: .Globa

在学习了search()函数之后,我有一些基本但关键的问题。 我想知道包、GlobalEnv、工作目录和工作区之间的准确含义和关系

当我使用这个函数时,它说

搜索() [1] .GlobalEnv“自动加载”包:基本

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

getwd()


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

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

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

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

从环境的定义来看:

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

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

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


e_u这个问题可能看起来很傻,但我是在问,因为工作区、全局环境和工作目录的概念和关系没有得到充分的阐述。这里有两个链接,你可能会发现它们很有用:(来自哈德利的高级R),。半相关的帖子等等:。
e_ <- .GlobalEnv
while( !identical(e_, emptyenv()) )
{ 
    e_ <- parent.env(e_)
    print(e_)
}