《Learning R》笔记 Chapter 6 上 环境

R中的环境(environment)和作用域(scope)使用list了这一数据结构,正如同python中使用对应的dict结构进行管理。当然环境本身不是list这一class/type,而是专门的environment class,可以用is.environment()进行判断。使用as.list和as.environment或list2env()能够相互转换。

创建一个新的envir,使用new.env()。新创建的env可以使用list的各种操作,如[[]]索引,$索引等。
在实际操作中,针对envir的赋值和取值,也会使用assign()和get()函数:

assign(x, value, pos = -1, envir = as.environment(pos), #x为变量名
   inherits = FALSE, immediate = TRUE) 

get(x, pos = -1, envir = as.environment(pos), mode = "any",
inherits = TRUE)
#注意这里inherit默认是T,因此会在parent environment中也进行搜寻。

ls和ls.str能够接收env名称,输出其中的内容。exist()则是探究某环境中是否存在某变量名。

ls(envir=环境名)  ;  ls.str(envir=环境名) ; exist('变量名', 环境名)
#exist(... ,  inherits = TRUE)类似get()

在R术语中,frame和environment是同义词。
globalenv()储存控制台输入的变量;baseenv()储存R的基础函数和变量:

> get('letters',envir = baseenv())
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x"
[25] "y" "z"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。