R语言 环境
环境是一个虚拟的空间,当一个编程语言的解释器启动时就会被触发。简单地说,环境是所有对象、变量和函数的集合。或者说,环境可以被认为是一个顶层对象,它包含了与一些数值相关的名称/变量集合。在这篇文章中,让我们讨论在R编程中创建一个新的环境,列出所有的环境,从环境中删除一个变量,在环境和函数环境中搜索一个变量或函数,并借助于例子。
为什么环境与列表不同
- 环境中的每个对象都有一个名字。
- 环境有一个父环境。
- 环境遵循引用语义。
创建一个新的环境
R编程中的环境可以用 new.env() 函数来创建。此外,可以使用 $或[[]] 操作符访问变量。但是,每个变量都存储在不同的内存位置。有四种特殊的环境: globalenv(), baseenv(), emptyenv()和environment()
语法: new.env(hash = TRUE)
参数:
hash: 表示逻辑值。如果为 “true”,环境使用一个哈希表。
要了解更多的可选参数,请在控制台使用以下命令: help(“new.env”)
例子
# R program to illustrate
# Environments in R
# Create new environment
newEnv <- new.env()
# Assigning variables
newEnvx <- 1
newEnvy <- "GFG"
newEnvz <- 1:10
# Print
print(newEnvz)
输出
[1] 1 2 3 4 5 6 7 8 9 10
列出所有环境
每个环境都有一个父环境,但有一个空环境,它没有任何父环境。使用 ls ()函数和 search() 函数可以列出所有的环境。 ls() 函数还可以列出一个特定环境中的所有变量的绑定关系。
语法
ls()
search()
参数:
这些函数不需要参数
例子
# 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() 函数,绑定会从环境中删除。
语法: rm(…)
参数:
... : 表示对象的列表
例子
# 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(name)
参数:
name: 表示要寻找的对象
例子
# R program to illustrate
# Environments in R
# Install pryr package
install.packages("pryr")
# Load the package
library(pryr)
# Search
where("x")
where("mode")
输出
<environment: R_GlobalEnv>
<environment: base>