1.  

r环境概念

  1. 环境:用来具体存储对象的地方。
  2.  
  3. 规则1:每一个对象都存储在一个环境当中。
  4.  
  5. 规则2:每一个环境都与一个父环境相连接,构成一个分层的环境系统。
  6.  
  7. 规则3:子环境与父环境的连接是单向的。
  8.  
  9. parenvs()查看当前R的环境; parenvs(all=TRUE)会返回当前会话包含的环境列表。
  10.  
  11. as.environment():指向环境树中的任意一个环境。
  12. globalenv(); base(); emptyenv(); parent.env()
  13. assign():赋值函数
  1. #R的环境系统
  2. install.packages("pryr")
  3. library(pryr)
  1. #查看当前R的环境
  2. parenvs()
  3. #显示R的环境树
  4. parenvs(all = T)

空环境的特点:

  1. #1.空环境没有父环境
  2. #2.空环境当中没有存储任何对象
  1. #当我们加载一个包的时候,这个包会在R里边
  2. #创建一个新的环境,并且这个新的环境会作为
  3. #全局环境的父环境
  4. library(ggplot2)
  5. parenvs(all = T)
  1. library(xlsx)
  2. parenvs(all = T)
  1. library(openxlsx)
  1. #指向一个环境
  2. as.environment("package:xlsx")
  3. #指向全局环境
  4. globalenv()
  5. #指向基环境
  6. baseenv()
  7. #指向空环境
  8. emptyenv()
  9.  
  10. #查看一个环境的父环境
  11. parent.env(globalenv())
  12.  
  13. #列出当前环境创建的所有对象
  14. ls()
  15. ls(baseenv())
  16. ls(emptyenv())
  17.  
  18. #练习:列出ggplot2包里边的所有对象
  19. ls(as.environment("package:ggplot2"))
  20. ls(package:ggplot2)
  21.  
  22. #包里面的同名函数被屏蔽掉
  23. #解决方式
  24. #第一种方式
  25. xlsx::write.xlsx()
  26. #第二种方式
  27. as.environment("package:xlsx")$write.xlsx()
  28.  
  29. #跨环境赋值
  30. assign("nihao",3,envir = globalenv())
  31. nihao
  32.  
  33. #活动环境
  34. #规则1:任何时候,R的活动环境都只有一个
  35. #规则2:所有的新对象都会被存储在该环境中
  36. #规则3:在搜索对象的时候,会优先从当前的环境里边搜索
  37.  
  38. #查看当前的活动环境
  39. environment()
  40. ls()
  41.  
  42. #查找一个对象保存在哪个环境中
  43. find("c")

作用域规则

  1. #作用域规则
  2. #规则1:R首先在当前的活动环境中搜索对象
  3. #规则2:当R在某个环境中没有搜索到对象时,
  4. #R会进入到该环境的父环境继续搜索
  1. > c(4,6)
  2. [1] 4 6
  3. > c<-9
  4. > c
  5. [1] 9
  1. #活动环境
  2. #规则1:任何时候,R的活动环境都只有一个
  3. #规则2:所有的新对象都会被存储在该环境中
  4. #规则3:在搜索对象的时候,会优先从当前的环境里边搜索
  5.  
  6. #查看当前的活动环境
  7. environment()
  8. ls()
  9.  
  10. #查找一个对象保存在哪个环境中
  11. find("c")
  12. #作用域规则
  13. #规则1:R首先在当前的活动环境中搜索对象
  14. #规则2:当R在某个环境中没有搜索到对象时,
  15. #R会进入到该环境的父环境继续搜索
  16.  
  17. c(4,6)
  18. c<-9
  19. c
  20.  
  21. #错误的函数定义
  22. c<-function(x,y){
  23. x+y
  24. }
  25. c(4,6)
  26. find("c")
  27. #调用base包里的c函数
  28. base::c(4,6)
  29. baseenv()$c(4,6)
  30. rm(c)
  31. c(4,6)
  32.  
  33. library(xlsx)
  34. parenvs(all = T)
  35. #从环境树中移除一个包
  36. detach("package:xlsx")
  37. library(xlsx)
  38.  
  39. #运行时环境
  40. #作用:避免与全局环境中的变量起冲突
  41. c1<-function(x,y){
  42. x+y
  43. }
  44.  
  45. x<-5
  46. c2<-function(t){
  47. x<-10
  48. x+t
  49. }
  50.  
  51. #原环境
  52. #创建函数的环境就是它的原环境
  53. #不管这个函数在哪里调用,
  54. #它的父环境永远都是它的原环境
  55.  
  56. show_env<-function(){
  57. list(hj=environment(),
  58. fhj=parent.env(environment()),
  59. dx=ls(environment()))
  60. }
  61. show_env()
  62.  
  63. #调用环境
  64. x<-1:8
  65. y<-x^3
  66. qplot(x,y)
  67.  
  68. show_env<-function(){
  69. a<-3
  70. b<-4
  71. list(hj=environment(),
  72. fhj=parent.env(environment()),
  73. dx=ls(environment()))
  74. }
  75. show_env()
  76.  
  77. #单链接
  78. #子环境可以搜索父环境里边的对象,
  79. #但是父环境不能搜索子环境里边的对象
  80.  
  81. #参数
  82. #函数运行时,参数会作为一个新的对象,
  83. #保存在运行时环境中
  84. show_env<-function(ui){
  85. a<-3
  86. b<-4
  87. list(hj=environment(),
  88. fhj=parent.env(environment()),
  89. dx=ls(environment()))
  90. }
  91. show_env()

环境系统总结:

  1. #1.任何时候,R的活动环境都只有一个
  2. #2.它会将所有的新对象存储在这个环境中,
  3. #并且在搜索对象时,以此环境作为初始搜寻点
  4. #3.R的活动环境通常为全局环境,但是当R在做
  5. #函数求值时,会临时将活动环境调整为运行时环境,
  6. #这种运作模式保证了安全性
  7. #4.定义函数的初始环境就是原环境,或者叫做父环境
  8. #5.调用函数的环境就是函数的调用环境

构建发牌函数

  1. #构建发牌函数
  2. PKP<-pkp
  3. # R语言记号体系,不要第一行数据
  4. pkp[-1,]
  5.  
  6. fapai<-function(){
  7. ca<-pkp[1,]
  8. assign("pkp",pkp[-1,],envir = globalenv())
  9. ca
  10. }
  11. fapai()
  12.  
  13. #构建洗牌函数
  14. pkp<-PKP
  15. xipai<-function(){
  16. sjs<-sample(1:52,52)
  17. # 在全局变量中找到PKP[sjs,]赋值给pkp
  18. assign("pkp",PKP[sjs,],envir = globalenv())
  19. }
  20. xipai()
  21. fapai()
  22.  
  23. x<-1:6
  24. # 随机函数
  25. x[sample(x,6)]
  26.  
  27. #构建闭包
  28. setup<-function(pk){
  29. PK<-pk
  30.  
  31. #构建发牌函数
  32. fp<-function(){
  33. ca<-pk[1,]
  34. assign("pk",pk[-1,],envir = parent.env(environment()))
  35. ca
  36. }
  37.  
  38. #构建洗牌函数
  39. xp<-function(){
  40. sjs<-sample(1:52,52)
  41. assign("pk",PK[sjs,],envir = parent.env(environment()))
  42. }
  43.  
  44. list(FP=fp,XP=xp)
  45. }
  46.  
  47. pkp<-PKP
  48. pai<-setup(pk=pkp)
  49. pai
  50. 发牌<-pai$FP
  51. 洗牌<-pai$XP
  52. rm(pkp)
  53. 洗牌()
  54. 发牌()
  55.  
  56. #项目三-lao hu ji
  57. #BBB BB B
  58. #BB B BB
  59. #B B B
  60. #C 7 C
  61. #C C BB
  62. #C C C
  63. #C 7 7
  64. #DD C B
  65. #B 0 0
  66. #7 7 DD 160
  67. #BBB BB DD
  68. #C 0 DD
  69. #7 DD DD 320
  70. #DD DD DD 800
  71. #DD 7 0

R的环境系统的更多相关文章

  1. 《R语言入门与实践》第六章:R 的环境系统

    前言 这一章在对象的基础之上,讲解了对象所处的环境,进一步讲了环境对对象的作用,以及如何使用环境.结构如下: 环境的定义和操作 环境的规则 制作闭包 环境 R 环境的定义 在 R 中,每一个数据对象都 ...

  2. RHCE基础环境系统的搭建

    RHCE基础环境系统的搭建 安装前提: 安装的时候对系统和硬件的要求: 红帽系统安装队系统的要求:Windows操作系统选择64位的内存至少6GCPU需要支持虚拟化技术在做红帽系统实验的时候,把360 ...

  3. R语言 环境设置

    尝试在线环境 你真的不需要设置自己的环境来开始学习R编程语言. 原因很简单,我们已经在线设置了R编程环境,以便您可以在进行理论工作的同时在线编译和执行所有可用的示例. 这给你对你正在阅读的信心,并用不 ...

  4. 在R语言环境中无法载入rJava包的解决办法

    问题描述: 安装包xlsx包后,运行library("xlsx")后弹出错误窗口: RGui (64-bit): Rgui.exe - 系统错误 无法启动此程序,因为计算机中丢失 ...

  5. Mac下R语言环境搭建

    Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...

  6. CENTOS7安装R语言环境

    CENTOS7安装R语言环境 yum install texinfo.x86_64 yum install texlive.x86_64 cd /opt wget https://mirrors.tu ...

  7. [r]Ubuntu Linux系统下apt-get命令详解

    Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...

  8. R语言环境安装与基本使用

    R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...

  9. 【Linux程序设计】之环境系统函数综合实验

    这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的.贴出来纯粹是聊胜于无. 实验题目:Linux环境下系统函数综合实验 实验目的:熟悉并掌握Linux环境下数学函 ...

随机推荐

  1. Python程序设计 测验易错题总结

    1.温度转换 t=input() if t[-1]=="J": t=int(t[:-1]) t1=t/4.186 print("%.3fcal"%t1) els ...

  2. tomcat修改使用指定的jdk版本

    linux安装的jdk1.6,无法满足当前tomcat项目使用,所以需要指定为更高版本的jdk. 主要修改tomcat bin目录下的catalina.sh和setclasspath.sh文件 添加内 ...

  3. Dynamics 365客户端编程示例:获取当前用户的信息,表单级通知/提示,表单OnLoad事件执行代码

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  4. windows中常见后门持久化方法总结

    转自:https://www.heibai.org/category-13.html 前言 当我们通过各种方法拿到一个服务器的权限的时候,我们下一步要做的就是后渗透了,而后门持久化也是我们后渗透很重要 ...

  5. sqlserver的表变量在没有预估偏差的情况下,与物理表可join产生的性能问题

    众所周知,在sqlserver中,表变量最大的特性之一就是没有统计信息,无法较为准备预估其数据分布情况,因此不适合参与较为复杂的SQL运算.当SQL相对简单的时候,使用表变量,在某些场景下,即便是对表 ...

  6. SQL Server解惑——为什么你的查询结果超出了查询时间范围

    废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个人设计了一个例子. USE AdventureWorks ...

  7. docker alphine 设置系统日期

    设置时区为上海 RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ...

  8. centos7.6 jumpserver 堡垒机 重启启动顺序

    cd /sdata/usr/local python3. -m venv py3 source /sdata/usr/local/py3/bin/activate cd /sdata/usr/loca ...

  9. s3c2440裸机-异常中断(一. 异常、中断的原理与流程)

    1.异常中断概述 在arm架构的处理器中,cpu有7中工作模式,2中工作状态. 1.CPU模式(Mode): 7种Mode: 除了usr/sys,其他5种都是异常模式.我们知道中断属于异常的2中,中断 ...

  10. 重启宝塔面板后提示-ModuleNotFoundError: No module named 'geventwebsocket'

    背景: 因服务器部署了flask项目,安装了python3,故重启宝塔面板报错 [Traceback (most recent call last): File , in load_class mod ...