《R语言入门与实践》学习笔记二(chapter4~6)
目标 : 如何存储、检索和修改计算机内存中的数据
设计一个扑克牌模拟系统,能够自动洗牌和发牌,系统可以记住发牌的结果,
四个任务 :
1 创建一副牌
2 发牌和洗牌函数
3 改变点数系统适应不同的扑克游戏
4 管理扑克牌桌的状态
创建一副扑克牌
第三章: R对象
1、 六种原子型向量:double ,integer,chatacter,logical,complex(复数),raw(原始类型)
2 、 名称属性 class name dim
name 属性
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105110916768-1492601723.png)
dim属性
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105110925706-11252382.png)
改变维度会改变对象的class属性
3 因子 factor(),存储分类信息,会有一个levels 和 class属性被添加
gender = factor(c("male","female","male","male"))
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111031237-2135467953.png)
4 R 中的强制类型转换
首先,R会将所有原子型字符串都转化为字符创类型
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111132503-252075576.png)
as函数
as.character(1)
as.logical(1)
as.numeric("11")
........
5 List 列表
向量,矩阵,数组都只能存贮单一类型的数据,不过在数据操作时候更加地直接和高效、
List将数据组织在一维集合中,组织的是R对象
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111150018-588519128.png)
6 数据框 data frame
是列表的二维版本 , 可以和Excel做对比,在结构上相似
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111211924-1568950573.png)
每列的长度需要相同
7 导入数据
tail(),head() 查看大数据的部分信息
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111236565-1170550463.png)
保存数据
write.csv(deck,file = "card.csv",row.names = FALSE )
发牌和洗牌函数
第4章 R的记号体系
4.1 值的选取
deck[ , ] 数据框[ , ]
六种,索引便写方式
正整数,负整数,零,空格,逻辑值,名称
(1)0正整数
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111321628-128622287.png)
(2)负整数
不包含
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111329331-158696989.png)
(3)零索引
并没有什么用处
(4)空格索引
提取维度的所有元素
(5)逻辑值索引
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111336987-474833251.png)
(6)名称索引
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111343846-1708783455.png)
4.2 发牌函数
可以发最顶上的一张牌,但是有问题,K永远在最上面
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111356518-1009424184.png)
4.3洗牌
思路,随机取出原来的一副牌
random = sample(1:52,size = 52)
deck4 = deck[random, ]
即可完成
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111423331-2139381362.png)
洗牌函数 shuffle(cards)
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111430612-1744424824.png)
4.4 美元符号 和 双中括号
第二种记号体系 $ 符号 提取数据框和列表对象的值
deck$value
$会原封不动地提取元素
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111505956-864328581.png)
双中括号 , 返回的是列表中的元素值
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111514503-932942440.png)
改变点数系统适应不同的扑克游戏
第五章 对象改值
5.1 对象改值
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111604143-2030260880.png)
为数据集添加新变量
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111617831-1969320382.png)
5.2 逻辑值取子集
如何确定洗牌之后某张牌的具体位置
(1)R的七种逻辑符号
a > b , a>=b , a<b,a<=v,a==b,a!=b
a%in%c(a,b,c) c(a,b,c)中是否包含a
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111626128-1287623588.png)
将所有红桃牌的值全部改为0
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111642018-762740574.png)
(2)布尔运算值
& | xor(只有一个为真) !(是否为假)
any(至少一个为真) all(全部为真)
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111654737-898064489.png)
5.3 缺失信息
因为某个测量值发生丢失或者被破坏或者测量根本就没有发生
NA表示不可用
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111710174-401585469.png)
NA 会原封不动地保留和传送,可以有效避免很多和缺失信息有关的错误
na.rm = TRUE 添加后,在对函数求值是会忽略NA
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111721018-1730259962.png)
is.na 用来测试某个数据集中是否存在NA
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111726503-626020306.png)
第六章 R的系统环境
(1)parvens 可以查看系统环境
(2)as.enviroment 可以指向环境树的任意一个环境
(3)三个环境拥有自己的调用函数 全局环境,基环境,空环境
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111733549-2078183407.png)
(4) parent.env()查看父环境 emptyenv()没有父环境
(5) ls()或者ls.str() 查看环境中的对象, ls只返回对象名称,ls.str命令展示每个对象的结构
![](https://images2017.cnblogs.com/blog/1147507/201801/1147507-20180105111740143-711069714.png)