environment
位于 base
包(package)。 说明
获取、设置、测试和创建环境。
用法
environment(fun = NULL)
environment(fun) <- value
is.environment(x)
.GlobalEnv
globalenv()
.BaseNamespaceEnv
emptyenv()
baseenv()
new.env(hash = TRUE, parent = parent.frame(), size = 29L)
parent.env(env)
parent.env(env) <- value
environmentName(env)
env.profile(env)
参数
fun |
|
value |
与函数关联的环境 |
x |
任意的R对象。 |
hash |
逻辑上,如果 |
parent |
用作所创建环境的 shell 的环境。 |
env |
一个环境 |
size |
指定哈希环境初始大小的整数。如果 |
细节
环境由框架或命名对象的集合以及指向封闭环境的指针组成。最常见的例子是函数调用的局部变量框架;它的 shell 是定义函数的环境(除非随后发生更改)。封闭环境与父框架不同:后者(由 parent.frame
返回)指的是函数调用者的环境。由于很容易混淆,因此最好不要将 ‘parent’ 与环境结合使用(尽管存在函数 parent.env
)。
当 get
或 exists
搜索具有默认 inherits = TRUE
的环境时,它们会在框架中查找变量,然后在封闭框架中查找变量,依此类推。
全局环境 .GlobalEnv
通常称为用户工作区,是搜索路径上的第一项。也可以通过 globalenv()
访问它。在搜索路径上,每个项目的附件是下一个项目。
对象 .BaseNamespaceEnv
是基础包的命名空间环境。基础包本身的环境可作为 baseenv()
获得。
如果从任何环境中重复调用 parent.env
来跟踪找到的封闭链,最终会到达空环境 emptyenv()
,在该环境中不能分配任何内容。
替换函数 parent.env<-
极其危险,因为它可用于以违反内部 C 代码所做假设的方式破坏性地改变环境。它可能会在不久的将来被删除。
environment
、 is.environment
、 baseenv
、 emptyenv
和 globalenv
的替换形式是 primitive 函数。
系统环境(例如基本环境、全局环境和空环境)的名称与包和命名空间环境以及 attach()
生成的环境的名称相同。其他环境可以通过提供 "name"
属性来命名,但这需要小心,因为环境具有不寻常的复制语义。
值
如果 fun
是函数或公式,则 environment(fun)
返回与该函数或公式关联的环境。如果fun
是NULL
,则返回当前的评估环境。
替换形式将函数或公式 fun
的环境设置为给定的 value
。
当且仅当 obj
是 environment
时,is.environment(obj)
返回 TRUE
。
new.env
返回一个新的(空)环境,(默认情况下)包含父框架。
parent.env
返回其参数的封闭环境。
parent.env<-
设置其第一个参数的封闭环境。
environmentName
返回打印环境时给出的字符串,如果不是命名环境,则返回""
。
env.profile
返回包含以下组件的列表: size
可以存储在哈希表中的链的数量, nchains
表中非空链的数量(由 HASHPRI
报告),以及counts
一个整数向量,给出每个链的长度(空链为零)。该函数旨在评估散列环境的性能。当env
是非哈希环境时,返回NULL
。
例子
f <- function() "top level function"
##-- all three give the same:
environment()
environment(f)
.GlobalEnv
ls(envir = environment(stats::approxfun(1:2, 1:2, method = "const")))
is.environment(.GlobalEnv) # TRUE
e1 <- new.env(parent = baseenv()) # this one has enclosure package:base.
e2 <- new.env(parent = e1)
assign("a", 3, envir = e1)
ls(e1)
ls(e2)
exists("a", envir = e2) # this succeeds by inheritance
exists("a", envir = e2, inherits = FALSE)
exists("+", envir = e2) # this succeeds by inheritance
eh <- new.env(hash = TRUE, size = NA)
with(env.profile(eh), stopifnot(size == length(counts)))
也可以看看
有关散列与否对性能的影响,请参阅https://en.wikipedia.org/wiki/Hash_table。
eval
、 get
和 exists
的 envir
参数。
ls
可用于查看环境中的对象,因此 ls.str
对于概览可能很有用。
sys.source
可用于填充环境。
相关用法
- R encodeString 对字符向量进行编码以供打印
- R eval 计算(未计算的)表达式
- R exists 是否已定义对象?
- R eapply 将函数应用于环境中的值
- R expand.grid 从因子变量的所有组合创建 DataFrame
- R expression 未计算的表达式
- R eigen 矩阵的谱分解
- R extSoftVersion 第三方软件的报告版本
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
- R rank 样本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 将文本推回连接
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R invisible 将打印模式更改为不可见
- R noquote “无引号”字符串打印类
- R warning 警告信息
- R rapply 递归地将函数应用于列表
- R basename 操作文件路径
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Environment Access。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。