《R语言入门与实践》第六章:R 的环境系统
前言
这一章在对象的基础之上,讲解了对象所处的环境,进一步讲了环境对对象的作用,以及如何使用环境.
结构如下:
- 环境的定义和操作
- 环境的规则
- 制作闭包
环境
R 环境的定义
在 R 中,每一个数据对象都储存在一个环境中,每一个环境都与一个父环境相连,这样的父子环境构成一个分层的树形结构.
特点:
与计算机文件系统相似,但是不支持自上而下的搜索.
R 环境的操作
environment() 查看活动环境
活动环境:即 user workspace(用户工作区),命令行中运行的命令在 R_GlobalEnv(全局环境)中工作.
功能:查看活动环境
assign() 取值
格式:
assign("new", "Hello World!", envir = globalenv() )
assign 有三个参数:
- 对象的名称:字符串格式的名称
- 对象的取值
- 对象所在环境的名称
功能:在特定的环境中,创建一个含有特定的去值的数据对象.
parent.env() 查看父环境
功能:查看父环境
格式: parent.env(globalenv())
其中的参数为环境的调用函数.
在 R 中,有三种环境可以调用,分别是:
- R_GlobalEnv 全局环境: globalenv()
- base 基环境: baseenv()
- R_EmptyEnv 空环境:emptyenv()
R 环境的规则
作用域规则
在命令行工作的前提下,活动环境为全局环境
规则如下:
- 首先在全局环境中搜索对象
- 如果没有搜索到对象,那么进行该环境的父环境继续搜索对象.
函数工作环境
运行函数时,函数本身创建一个临时的工作环境.
原环境:函数工作环境(调用环境)的父环境
注意:
- 在命令行创建的函数的原环境为 R_GlobalEnv
- 对于其他函数,函数第一次运行所在的环境为该函数运行的父环境
Closure 闭包
定义:
由于函数中存在位置处于 R_GlobalEnv 中的数据对象.而 R_GlobalEnv 时常发生变化,因此为了安全,将 R_GlobalEnv 的参数即函数打包在一起,使得函数调用时,能够在当前环境直接调用.称为「闭包」.
格式:
setup <- function(deck) {
DECK <- deck
DEAL <-function(){
card <- deck[1, ]
assign("deck", deck[-1, ], envir = parent.env(enviroment()))
card
}
《R语言入门与实践》第六章:R 的环境系统的更多相关文章
- 《R语言入门与实践》第一章:R基础
前言 本章介绍了 R 语言的基础知识 界面: 使用命令 “ R “进行命令行的实时编译 对象 定义: 用于储存数据的,设定一个名称 格式: a <- 1:6 命名规则: 规则1:不能以数字开头规 ...
- 《R语言入门与实践》第二章:R包和帮助文档
这一章讲了两方面的内容,如何使用 R 包和帮助文档. R包 下载 R 包 命令: install.packages("<nameofpackage>") R 会话中启用 ...
- 《R语言实战》读书笔记--第一章 R语言介绍
1.典型的数据分析过程可以总结为一下图形: 注意,在模型建立和验证的过程中,可能需要重新进行数据清理和模型建立. 2.R语言一般用 <- 作为赋值运算符,一般不用 = ,原因待考证.用-> ...
- python编程:从入门到实践----第六章>字典
一.一个简单的字典:alien_0存储外星人的颜色和点数,使用print打印出来 alien_0 = {'color': 'green','points': 5} print(alien_0['col ...
- 《R语言入门与实践》第七章:程序
前言 这一章讲了程序设计的相关知识,经过了: 算法分析 编码 得到最后的程序. if 语句 格式:if (this) {that} else if { another} else { another ...
- 《R语言入门与实践》第五章:对象改值
本章将了如何对一个数据对象中的数据进行改动,分为以下方法: 直接改值 条件取值然后改值 直接改值 单个改值:vec[1] <- 1000多个改值: vec[c(1,3,5)] <- 100 ...
- 《R语言入门与实践》第三章:R 对象
在这一章,包含的内容有: R 的数据类型 属性 类(特殊的属性) Ruby 的数据结构 R 数据类型 R 可以识别六种类型的数据类型,分别是: double integer character log ...
- 《R语言入门与实践》第四章:R 的记号体系
这一章节将如何对 R 对象中的值进行选取,R 的符号规则有两种方式进行查询: 第一种记号体系:索引查询索引语法:deck[ , ](使用中括号)其中[ , ] 为索引,其中含有两个索引参数,用 &qu ...
- Python:从入门到实践--第六章--字典--练习
#1.人:使用一个字典来存储一个熟人的信息;包括姓,名,年龄和居住的城市.将字典中的每项信息都打印出来 friend = { 'last_name':'马', 'first_name':'脑壳', ' ...
随机推荐
- Xamarin.Forms FlexLayout 布局扩展+ 模板扩展+弹性换行
Binding a FlexLayout to a Collection In May we published a doc on the new FlexLayout control that’ ...
- 如何通过轮询实现session自动注销
每个用户在访问完网站后,经常会忽略注销账户,session默认存在的时间为30分钟,因此如果需要立即关闭session而又不用麻烦用户则可以通过轮询的方法来实现. 以下通过代码的讲解: xml配置文件 ...
- Maven 学习笔记-maven属性
Maven有六类属性: 1)内置属性 主要有两个常用内置属性 ${basedir}:表示项目根目录,即包含pom.xml文件的目录: ${version}:表示项目版本: 2)POM属性 ${M2_H ...
- textarea如何实现高度自适应?
今天需要些一个回复评论的页面,设计师给的初始界面就是一个只有一行的框.然后当时就想这个交互该怎么实现比较好,然后想起了新浪微博的做法:点击评论,默认显示一行,当输入的文字超过一行或者输入Enter时, ...
- docker-images(镜像)
一.获取镜像 docker search NAME 搜索引擎查找镜像 docker pull NAME:<TAG> 拉去镜像 NAME:表示镜像名称/镜像仓库的名称 TAG: 表示镜像的 ...
- 浅析贝叶斯神经网络(Based on Variational Bayesian)
https://blog.csdn.net/qq_20195745/article/details/82453589 贝叶斯神经网络简介 对于一个神经网络来说,最为核心的是如何根据训练集的数据,得到各 ...
- linux查看与修改交换内存配置(解决zabbix-agent启动报错)
问题 zabbix-agent在一台centos6.5上启动报错: cannot allocate shared memory of size 949056: [28] No space left o ...
- selenium 文件上传
一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方 ...
- 【做题】ECFinal2018 J - Philosophical … Balance——dp
原文链接 https://www.cnblogs.com/cly-none/p/ECFINAL2018J.html 题意:给出一个长度为\(n\)的字符串\(s\),要求给\(s\)的每个后缀\(s[ ...
- SQL 删除数据 的所有用法
https://blog.51cto.com/13588598/2066335 1.使用 delete 语句删除表中的数据:语法:delete from <表名> [where <删 ...