R 编程中的环境
环境是在启动编程语言的解释器时触发的虚拟空间。简单地说,环境是所有对象、变量和函数的集合。或者,Environment 可以假设为一个顶级对象,其中包含与某些值相关联的名称/变量集。在本文中,让我们通过示例讨论在 R 编程中创建新环境、列出所有环境、从环境中删除变量、在环境和函数环境中搜索变量或函数。
为什么环境与列表不同?
- 环境中的每个对象都有一个名称。
- 该环境有一个父环境。
- 环境遵循引用语义。
创建新环境
可以使用new.env()函数创建 R 编程环境。此外,可以使用$ 或 [[ ]]运算符访问变量。但是,每个变量都存储在不同的内存位置。有四种特殊环境: globalenv()、baseenv()、emptyenv() 和 environment()
Syntax: new.env(hash = TRUE)
Parameters:
hash: indicates logical value. If TRUE, environments uses a hash table
To know about more optional parameters, use below command in console: help(“new.env”)
例子:
R
# R program to illustrate
# Environments in R
# Create new environment
newEnv <- new.env()
# Assigning variables
newEnv$x <- 1
newEnv$y <- "GFG"
newEnv$z <- 1:10
# Print
print(newEnv$z)
R
# R program to illustrate
# Environments in R
# Prints all the bindings and environments
# attached to Global Environment
ls()
# Prints bindings of newEnv
ls(newEnv)
# Lists all the environments of the parent environment
search()
R
# R program to illustrate
# Environments in R
# Remove newEnv
rm(newEnv)
# List
ls()
R
# R program to illustrate
# Environments in R
# Install pryr package
install.packages("pryr")
# Load the package
library(pryr)
# Search
where("x")
where("mode")
输出:
[1] 1 2 3 4 5 6 7 8 9 10
列出所有环境
每个环境都有一个父环境,但有一个没有任何父环境的空环境。可以使用ls()函数和search()函数列出所有环境。 ls()函数还列出了特定环境中变量的所有绑定。
Syntax:
ls()
search()
Parameters:
These functions need no argument
例子:
R
# R program to illustrate
# Environments in R
# Prints all the bindings and environments
# attached to Global Environment
ls()
# Prints bindings of newEnv
ls(newEnv)
# Lists all the environments of the parent environment
search()
输出:
[1] "al" "e" "e1" "f" "newEnv" "pts" "x" "y"
[9] "z"
[1] "x" "y" "z"
[1] ".GlobalEnv" "package:stats" "package:graphics"
[4] "package:grDevices" "package:utils" "package:datasets"
[7] "package:methods" "Autoloads" "package:base"
从环境中删除变量
使用rm()函数删除环境中的变量。它与从列表中删除条目不同,因为列表中的条目设置为 NULL 以被删除。但是,使用rm()函数,绑定会从环境中移除。
Syntax: rm(…)
Parameters:
…: indicates list of objects
例子:
R
# R program to illustrate
# Environments in R
# Remove newEnv
rm(newEnv)
# List
ls()
输出:
[1] "al" "e" "e1" "f" "pts" "x" "y" "z"
在环境中搜索变量或函数
可以在 R 编程中使用where()函数在所有存在的环境和包中搜索变量或函数。 where()函数存在于pryr包中。这个函数只接受两个参数,要搜索的对象的名称和开始搜索的环境。
Syntax: where(name)
Parameters:
name: indicates object to look for
例子:
R
# R program to illustrate
# Environments in R
# Install pryr package
install.packages("pryr")
# Load the package
library(pryr)
# Search
where("x")
where("mode")
输出: