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的环境系统的更多相关文章

  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. Dynamics CRM 2013开始推出的服务器端同步来配置邮件服务

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

  2. Android Studio的安装及第一次启动时的配置

    Android Studio的安装及第一次启动时的配置 一.下载Android Studio 百度搜索“Android Studio" 点击中文社区进入,选择最新版本下载. 下载后双击安装包 ...

  3. Shell脚本监控CPU、内存和硬盘利用率

    1.监控CPU利用率(通过vmstat工具) #!/bin/bash #==================================================== # Author: l ...

  4. 25.推荐---协同过滤(Collaborative Filtering)

    协同过滤需要注意的三点: gray sheep(有人喜欢追求特别,协同过滤一般只能从共同的人或物间找相似) shilling attack(水军刷好评导致数据错误,无法带来精确的推荐) cold st ...

  5. C++之重载覆盖和隐藏

    继承体系下同名成员函数的三种关系 重载 在同一作用域内 函数名相同,参数列表不同(分三种情况:参数个数不同,参数类型不同,参数个数和类型都不同) 返回值类型可以相同也可以不同 重写(覆盖) 在不同作用 ...

  6. md2all 简单实用

    . 简单使用 md2all 使用地址:http://md.aclickall.com/ . 常用操作 #代表标题等级 英文下```java(语言)``` 代表代码块

  7. redis 事务(悲观锁和乐观锁)

    MULTI 开启事务,后续的命令会被加入到同一个事务中 事务中的操作会发送给客服端,但是不会立即执行,而是将操作放到了该事务对应的一个队列中,服务端返回QUEQUD EXEC 执行EXEC后,事务中的 ...

  8. ZooKeeper(六):watch机制的原理与实现

    因为ZK有watch机制,可以随时发现一些数据的变化,从而达到数据的及时性. ZK的所有读操作都可以设置watch监视点: getData, getChildren, exists. 写操作则是不能设 ...

  9. Elasticsearch 6.x版本全文检索学习之集群调优建议

    1.系统设置要到位,遵照官方建议设置所有的系统参数. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/setup.html 部署 ...

  10. Sqlite-net 修改版 支持中文和CodeFirst技术

    最近, 做的一个windows 桌面WPF程序, 需要数据库支持.尝试了 sql server 的开发版,使用EF , 效率太低.后来采用sqlite数据库,中间踩坑无数.但最终完美的解决了这些问题. ...