R的环境系统(环境,作用域,闭包)

本文深入探讨R的环境系统,包括环境的分层结构、操作环境的方法、作用域规则、赋值行为以及闭包的概念。通过示例解释了函数求值过程中的运行时环境,并展示了如何创建闭包以保护和管理对象。
摘要由CSDN通过智能技术生成

R的环境系统

在这里插入图片描述
学习R如何存储、查找和操作像deck这样的对象
R其实是借助了它的环境系统来实现所有这些任务的

一、环境

计算机会将文件夹和子文件夹用分层结构组织起来。要想找到某个文件,你需要知道如何在计算机的文件系统中逐层查找。

R存储对象时也用了类似的层级系统结构。每一个对象都存储在一个环境(environment当中。环境是一个类似于列表的对象,概念上接近于计算机上的文件夹。每一个环境都与一个父环境相连接,后者是高一层级的环境。这样的父子环境就构成了一个分层的环境系统。

可以通过devtools包中的parenvs函数查看R的环境系统。parenvs(all=true)会返回当前会话包含的环境列表。

R存储对象的树形环境结构类似于计算机的文件系统结构。

二、操作R环境

环境树中有三个环境拥有自己的调用函数。它们是:全局环境(r_GlobalEnv)、基环境(base)和空环境(r_EmptyEnv)。可以通过以下命令调用它们。

 globalenv()

 baseenv()

 emptyenv()

在这里插入图片描述

可以用parent.env函数查看某一个环境的父环境。

parent.env(globalenv())

在这里插入图片描述

空环境是R中唯一没有父环境的环境。

可以使用ls命令或者lsstr命令查看存储在环境中的对象。ls命令只返回对象名称;ls.str命令则会大致展示每个对象的结构。

ls(emptyenv())

ls(globalenv()) 

在这里插入图片描述

可以使用assign函数将对象存储到某个特定环境当中。

assign(“new”,“Hello Global”,envir=globalenv())
globalenv()$new
在这里插入图片描述

任何时候,R的活动环境都只有一个,活动环境就是全局环境。

三、作用域规则

在搜索对象时,R会遵循一系列的规则。这些规则被称作R的作用域规则(scopingrules。

(1)R首先在当前的活动环境中搜索对象。

(2)在命令行中工作时,活动环境就是全局环境。因此,命令行中的所有调用都发生在全局环境。
当所要搜索的对象不在当前的活动环境中时R会按照以下规则进行搜索。

(3)当R在某个环境中没有搜索到对象时,R会进入该环境的父环境,然后进入该父环境

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎明之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值