R的环境系统
r环境概念
- 环境:用来具体存储对象的地方。
- 规则1:每一个对象都存储在一个环境当中。
- 规则2:每一个环境都与一个父环境相连接,构成一个分层的环境系统。
- 规则3:子环境与父环境的连接是单向的。
- parenvs()查看当前R的环境; parenvs(all=TRUE)会返回当前会话包含的环境列表。
- as.environment():指向环境树中的任意一个环境。
- globalenv(); base(); emptyenv(); parent.env()
- assign():赋值函数
- #R的环境系统
- install.packages("pryr")
- library(pryr)
- #查看当前R的环境
- parenvs()
- #显示R的环境树
- parenvs(all = T)
空环境的特点:
- #1.空环境没有父环境
- #2.空环境当中没有存储任何对象
- #当我们加载一个包的时候,这个包会在R里边
- #创建一个新的环境,并且这个新的环境会作为
- #全局环境的父环境
- library(ggplot2)
- parenvs(all = T)
- library(xlsx)
- parenvs(all = T)
- library(openxlsx)
- #指向一个环境
- as.environment("package:xlsx")
- #指向全局环境
- globalenv()
- #指向基环境
- baseenv()
- #指向空环境
- emptyenv()
- #查看一个环境的父环境
- parent.env(globalenv())
- #列出当前环境创建的所有对象
- ls()
- ls(baseenv())
- ls(emptyenv())
- #练习:列出ggplot2包里边的所有对象
- ls(as.environment("package:ggplot2"))
- ls(package:ggplot2)
- #包里面的同名函数被屏蔽掉
- #解决方式
- #第一种方式
- xlsx::write.xlsx()
- #第二种方式
- as.environment("package:xlsx")$write.xlsx()
- #跨环境赋值
- assign("nihao",3,envir = globalenv())
- nihao
- #活动环境
- #规则1:任何时候,R的活动环境都只有一个
- #规则2:所有的新对象都会被存储在该环境中
- #规则3:在搜索对象的时候,会优先从当前的环境里边搜索
- #查看当前的活动环境
- environment()
- ls()
- #查找一个对象保存在哪个环境中
- find("c")
作用域规则
- #作用域规则
- #规则1:R首先在当前的活动环境中搜索对象
- #规则2:当R在某个环境中没有搜索到对象时,
- #R会进入到该环境的父环境继续搜索
- > c(4,6)
- [1] 4 6
- > c<-9
- > c
- [1] 9
- #活动环境
- #规则1:任何时候,R的活动环境都只有一个
- #规则2:所有的新对象都会被存储在该环境中
- #规则3:在搜索对象的时候,会优先从当前的环境里边搜索
- #查看当前的活动环境
- environment()
- ls()
- #查找一个对象保存在哪个环境中
- find("c")
- #作用域规则
- #规则1:R首先在当前的活动环境中搜索对象
- #规则2:当R在某个环境中没有搜索到对象时,
- #R会进入到该环境的父环境继续搜索
- c(4,6)
- c<-9
- c
- #错误的函数定义
- c<-function(x,y){
- x+y
- }
- c(4,6)
- find("c")
- #调用base包里的c函数
- base::c(4,6)
- baseenv()$c(4,6)
- rm(c)
- c(4,6)
- library(xlsx)
- parenvs(all = T)
- #从环境树中移除一个包
- detach("package:xlsx")
- library(xlsx)
- #运行时环境
- #作用:避免与全局环境中的变量起冲突
- c1<-function(x,y){
- x+y
- }
- x<-5
- c2<-function(t){
- x<-10
- x+t
- }
- #原环境
- #创建函数的环境就是它的原环境
- #不管这个函数在哪里调用,
- #它的父环境永远都是它的原环境
- show_env<-function(){
- list(hj=environment(),
- fhj=parent.env(environment()),
- dx=ls(environment()))
- }
- show_env()
- #调用环境
- x<-1:8
- y<-x^3
- qplot(x,y)
- show_env<-function(){
- a<-3
- b<-4
- list(hj=environment(),
- fhj=parent.env(environment()),
- dx=ls(environment()))
- }
- show_env()
- #单链接
- #子环境可以搜索父环境里边的对象,
- #但是父环境不能搜索子环境里边的对象
- #参数
- #函数运行时,参数会作为一个新的对象,
- #保存在运行时环境中
- show_env<-function(ui){
- a<-3
- b<-4
- list(hj=environment(),
- fhj=parent.env(environment()),
- dx=ls(environment()))
- }
- show_env()
环境系统总结:
- #1.任何时候,R的活动环境都只有一个
- #2.它会将所有的新对象存储在这个环境中,
- #并且在搜索对象时,以此环境作为初始搜寻点
- #3.R的活动环境通常为全局环境,但是当R在做
- #函数求值时,会临时将活动环境调整为运行时环境,
- #这种运作模式保证了安全性
- #4.定义函数的初始环境就是原环境,或者叫做父环境
- #5.调用函数的环境就是函数的调用环境
构建发牌函数
- #构建发牌函数
- PKP<-pkp
- # R语言记号体系,不要第一行数据
- pkp[-1,]
- fapai<-function(){
- ca<-pkp[1,]
- assign("pkp",pkp[-1,],envir = globalenv())
- ca
- }
- fapai()
- #构建洗牌函数
- pkp<-PKP
- xipai<-function(){
- sjs<-sample(1:52,52)
- # 在全局变量中找到PKP[sjs,]赋值给pkp
- assign("pkp",PKP[sjs,],envir = globalenv())
- }
- xipai()
- fapai()
- x<-1:6
- # 随机函数
- x[sample(x,6)]
- #构建闭包
- setup<-function(pk){
- PK<-pk
- #构建发牌函数
- fp<-function(){
- ca<-pk[1,]
- assign("pk",pk[-1,],envir = parent.env(environment()))
- ca
- }
- #构建洗牌函数
- xp<-function(){
- sjs<-sample(1:52,52)
- assign("pk",PK[sjs,],envir = parent.env(environment()))
- }
- list(FP=fp,XP=xp)
- }
- pkp<-PKP
- pai<-setup(pk=pkp)
- pai
- 发牌<-pai$FP
- 洗牌<-pai$XP
- rm(pkp)
- 洗牌()
- 发牌()
- #项目三-lao hu ji
- #BBB BB B
- #BB B BB
- #B B B
- #C 7 C
- #C C BB
- #C C C
- #C 7 7
- #DD C B
- #B 0 0
- #7 7 DD 160
- #BBB BB DD
- #C 0 DD
- #7 DD DD 320
- #DD DD DD 800
- #DD 7 0
R的环境系统的更多相关文章
- 《R语言入门与实践》第六章:R 的环境系统
前言 这一章在对象的基础之上,讲解了对象所处的环境,进一步讲了环境对对象的作用,以及如何使用环境.结构如下: 环境的定义和操作 环境的规则 制作闭包 环境 R 环境的定义 在 R 中,每一个数据对象都 ...
- RHCE基础环境系统的搭建
RHCE基础环境系统的搭建 安装前提: 安装的时候对系统和硬件的要求: 红帽系统安装队系统的要求:Windows操作系统选择64位的内存至少6GCPU需要支持虚拟化技术在做红帽系统实验的时候,把360 ...
- R语言 环境设置
尝试在线环境 你真的不需要设置自己的环境来开始学习R编程语言. 原因很简单,我们已经在线设置了R编程环境,以便您可以在进行理论工作的同时在线编译和执行所有可用的示例. 这给你对你正在阅读的信心,并用不 ...
- 在R语言环境中无法载入rJava包的解决办法
问题描述: 安装包xlsx包后,运行library("xlsx")后弹出错误窗口: RGui (64-bit): Rgui.exe - 系统错误 无法启动此程序,因为计算机中丢失 ...
- Mac下R语言环境搭建
Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...
- CENTOS7安装R语言环境
CENTOS7安装R语言环境 yum install texinfo.x86_64 yum install texlive.x86_64 cd /opt wget https://mirrors.tu ...
- [r]Ubuntu Linux系统下apt-get命令详解
Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...
- R语言环境安装与基本使用
R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...
- 【Linux程序设计】之环境系统函数综合实验
这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的.贴出来纯粹是聊胜于无. 实验题目:Linux环境下系统函数综合实验 实验目的:熟悉并掌握Linux环境下数学函 ...
随机推荐
- Python程序设计 测验易错题总结
1.温度转换 t=input() if t[-1]=="J": t=int(t[:-1]) t1=t/4.186 print("%.3fcal"%t1) els ...
- tomcat修改使用指定的jdk版本
linux安装的jdk1.6,无法满足当前tomcat项目使用,所以需要指定为更高版本的jdk. 主要修改tomcat bin目录下的catalina.sh和setclasspath.sh文件 添加内 ...
- Dynamics 365客户端编程示例:获取当前用户的信息,表单级通知/提示,表单OnLoad事件执行代码
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- windows中常见后门持久化方法总结
转自:https://www.heibai.org/category-13.html 前言 当我们通过各种方法拿到一个服务器的权限的时候,我们下一步要做的就是后渗透了,而后门持久化也是我们后渗透很重要 ...
- sqlserver的表变量在没有预估偏差的情况下,与物理表可join产生的性能问题
众所周知,在sqlserver中,表变量最大的特性之一就是没有统计信息,无法较为准备预估其数据分布情况,因此不适合参与较为复杂的SQL运算.当SQL相对简单的时候,使用表变量,在某些场景下,即便是对表 ...
- SQL Server解惑——为什么你的查询结果超出了查询时间范围
废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个人设计了一个例子. USE AdventureWorks ...
- docker alphine 设置系统日期
设置时区为上海 RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ...
- centos7.6 jumpserver 堡垒机 重启启动顺序
cd /sdata/usr/local python3. -m venv py3 source /sdata/usr/local/py3/bin/activate cd /sdata/usr/loca ...
- s3c2440裸机-异常中断(一. 异常、中断的原理与流程)
1.异常中断概述 在arm架构的处理器中,cpu有7中工作模式,2中工作状态. 1.CPU模式(Mode): 7种Mode: 除了usr/sys,其他5种都是异常模式.我们知道中断属于异常的2中,中断 ...
- 重启宝塔面板后提示-ModuleNotFoundError: No module named 'geventwebsocket'
背景: 因服务器部署了flask项目,安装了python3,故重启宝塔面板报错 [Traceback (most recent call last): File , in load_class mod ...