第2章 R语言编程基础(超详细)

目录

2.1 数据管理

2.1.1 变量重命名

2.1.2 缺失、异常与重复值的清洗

2.1.3 数据转换、排序、抽样与概率统计

2.1.4 案例分析(工程管理)

2.1.5 字符串处理

2.2 [控制语句与函数编写]

2.2.1 控制语句:分值与循环

2.2.2 函数编写

2.3 程序调试

2.3.1 程序调试的原则

2.3.2 R的调试工具

2.3.3 语法与运行时的常见错误

2.4 图形制作

2.4.1 绘图函数

2.4.2 绘图参数

2.4.3 图形要素

2.4.4 图形组合与保存

2.4.5 绘图案例

2.5 常用程序包

2.5.1 标准包

2.5.2 安装包


2.1 数据管理

2.1.1 变量重命名

fix() 交互式修改,数据框交互式、列表的交互式修改是记事本
rename() 修改数据框或列表的变量名,不能修改矩阵的变量名(位于 reshape 包中)
names() 修改 数据框或列表的变量名 ,不能修改矩阵的变量名( ***
colnames() 修改 数据框、列表、矩阵的变量名 **

第2章 R语言编程基础(超详细)_第1张图片

2.1.2 缺失、异常与重复值的清洗

1. 缺失值的发现与清洗
is.na() 缺失值检测(对象的每个数据), TRUE 表示该位置为缺失值
anyNA() 数据对象只要有一个缺失值就会返回 TRUE
complete.cases() 哪一行存在缺失值?返回 TRUE 表示数据完整
na.omit() 数据框:删除数据框中 存在缺失值的行
矩阵:删除缺失值的元素(常用)
缺失值除了删除也可以通过替换 / 插补
第2章 R语言编程基础(超详细)_第2张图片
2. 异常值的发现与清洗(离群点,奇异点)
boxplot() 异常值的检测
boxplot() 运行结果中的 out 字段取出,赋值为 NA ,再用 na.omit() 删除

 第2章 R语言编程基础(超详细)_第3张图片

第2章 R语言编程基础(超详细)_第4张图片

3. 重复值的发现与清洗
duplicated(x) x 为矩阵 / 数据框,对行查重; x 为向量,对元素查重
unique(x) x 为矩阵,对行作唯一运算,相当于 x[!duplicated(x),]
第2章 R语言编程基础(超详细)_第5张图片

2.1.3 数据转换、排序、抽样与概率统计

1. 数据转换
函数转换: log() exp() 查分转换 diff() 累加转换 cumsum()
规范化转化: z-score 标准化 scale() eg :标准正态分布
最小最大规范化:极差标准化
小数定标规范化:映射到 [-1,1]

 第2章 R语言编程基础(超详细)_第6张图片

第2章 R语言编程基础(超详细)_第7张图片 第2章 R语言编程基础(超详细)_第8张图片

2. 数据排序
sort() 从小到大,升序排列
sort(score$math) sort(score$math, decreasing = TRUE) # 倒序输出
sort(score$Chinese, na.last = TRUE) # 缺失值排在最后
rank() 求出每个元素的秩,重复数据的秩取平均值

order() 向量和数据框都可排序,返回值表示 sort(x) 中对应排名的元素在向量中的位置  

第2章 R语言编程基础(超详细)_第9张图片

第2章 R语言编程基础(超详细)_第10张图片

3. 数据抽样
sample() 随机抽样,分组;可先应用 set.seed() 设置随机种子
sample(1:100, 20, rep=T) 放回抽样
sample(1:100, 20, prob=1:100) 给不同数字不同的抽到概率
srswr() 重复随机抽样 srswor() 无重复的简单随机抽样 其他抽样函数

 第2章 R语言编程基础(超详细)_第11张图片

4. 概率统计

第2章 R语言编程基础(超详细)_第12张图片

第2章 R语言编程基础(超详细)_第13张图片

2.1.4 案例分析(工程管理)

P10 17:02

2.1.5 字符串处理

1. 正则表达式(通配符号)
运算顺序:圆括号 > 表示重复次数的操作(最后四个) > 链接运算(如 abc > 可选项运算 |
常用元字符
第2章 R语言编程基础(超详细)_第14张图片

2. 字符串处理函数  

第2章 R语言编程基础(超详细)_第15张图片

 

第2章 R语言编程基础(超详细)_第16张图片

第2章 R语言编程基础(超详细)_第17张图片

 第2章 R语言编程基础(超详细)_第18张图片

第2章 R语言编程基础(超详细)_第19张图片

2.2 [控制语句与函数编写]

块状结构程序语言 {block}

2.2.1 控制语句:分值与循环

1. 分支 / 条件语句
if - else - if 结构: if(cond1){expression1} else if (cond2){expression} else
{expression}
if 结构: if (cond1){expression1}
向量化条件 函数 ifelse( 条件,语句 1 ,语句 2)

 第2章 R语言编程基础(超详细)_第20张图片

switch(expression,list) expression为数字编号或变量名,list为列表  

第2章 R语言编程基础(超详细)_第21张图片

tipselse if/else不能顶格写

2. 循环语句
for(n in x) { 语句体 / 循环体 } x 为循环空间,可以是向量或者乡里那个排列式
while(cond){expression} while/repeat 循环中需要 i< - i+1 来实现循环
repeat{if(cond){break} expression} repeat-break 循环,符合 if 条件跳出循环
非向量集合的循环空间 lapply() get()

 第2章 R语言编程基础(超详细)_第22张图片

2.2.2 函数编写

1. 函数定义
格式: 函数名 < - function( 参数列表 ){ 表达式 / 函数体 }
函数中再次定义函数:全局变量 / 局部变量
输出: stop 打印输出 /plot,hist 图形输出 /return 返回结果,默认最后的语句作为语句的值
stop("something error orz") 输出错误信息
2. 函数调用
格式: 目标变量 < - 函数名 ( 参数列表 )
3. 程序示例
第2章 R语言编程基础(超详细)_第23张图片

第2章 R语言编程基础(超详细)_第24张图片

第2章 R语言编程基础(超详细)_第25张图片

2.3 程序调试

2.3.1 程序调试的原则

1. 调试的本质:逐步确认

2. 小处着手,从小的、简单点的调试
3. 模块化,自上而下的调试风格,无罪推定思维
4. 反漏洞策略

2.3.2 R的调试工具

1. debug() browser()
针对单个函数来进行调试
在函数中某一行加入一条 browser() 语句会执行到这一条的时候才打开浏览器
2. 使用浏览器命令
n 表示 next ,或者点击 Enter ,执行下一行
c 表示 continue ,下次暂停前可能执行若干条语句
Q 表示退出浏览器
3. 设置断点(浏览器只有在特定条件下才会被打开)
setBreadpoint(filename,linenumber) 对给定的文件,在设定的行 / 位置处展开调试
4. trace() 追踪
trace(f,browser) f() 函数文件中的第一行加入一条 browser() 语句
untrace(f)
5. R 程序崩溃
traceback() 看问题发生在哪个函数中,程序怎样通过函数调用到那个函数
options(error=dump.frames) 更详细的信息
6. 程序调试的 2 个案例
Case1 Debug Browser
第2章 R语言编程基础(超详细)_第26张图片
如果有 browser() ,则函数运行停在 browser() ;如果是从头开始,源程序里面需要增加一行
debug()
如果在断点之前就有错误返回,则调试会直接结束

 第2章 R语言编程基础(超详细)_第27张图片

Case2 :寻找 1 的游程
注:在 0 1 组成的序列中,一个由连续的 0 1 构成的串、称为一个游程 run

 第2章 R语言编程基础(超详细)_第28张图片

 第2章 R语言编程基础(超详细)_第29张图片

调试代码

注意:调试过程中如果想要看变量 n 或者 Q 的值,需要 print(n) 不可以直接输入 n
debug at #3: runs < - NULL 表示程序运行到这这一步但是还没有执行

 第2章 R语言编程基础(超详细)_第30张图片

bug :运算优先级别,应当为 i:(i+k - 1)
可以在循环前设置断点,避免前面的操作

 

 最后一次循环一般是容易出问题的地方, 可以在最后一次循环前添加断点

第2章 R语言编程基础(超详细)_第31张图片
此时 browser 中输入 i 返回 7 ,但是应该到 n-k+1=8 时, 8-9 仍可能是长度为 2
因此正确的代码应该把

2.3.3 语法与运行时的常见错误

1. 二分搜索(注释掉一半的代码)
2. There are 50 or more warnings 出现该信息可以通过 warnings() 查看前 50 个,问题可能是
某个算法不收敛,或者函数接受了一个不正确的矩阵参数。
3. set.seed() 控制重复的模拟随机序列,验证随机分布

2.4 图形制作

2.4.1 绘图函数

高级绘图函数:可以自建画布;低级绘图函数:补鞥呢自建画布,只能添加点线、图例等

第2章 R语言编程基础(超详细)_第32张图片

2.4.2 绘图参数

高级绘图参数 :只能改变当前窗口图形输出

第2章 R语言编程基础(超详细)_第33张图片

 par绘图参数 :在已有图形上添加说明信息par函数参考说明

第2章 R语言编程基础(超详细)_第34张图片

第2章 R语言编程基础(超详细)_第35张图片

 第2章 R语言编程基础(超详细)_第36张图片

2.4.3 图形要素

色点线 cpl 、文例轴 tla
1.
绘图参数 col :可以改变图像、坐标轴、文本、图例、点、线的颜色
palette() :设置调色板的颜色 [ 调色板中相应未知的元素 ]
整数可以表示颜色,默认的对应关系 [1 2 3 绿 4 ] [5 蓝绿 6 洋红 ] [7 8 ]

 第2章 R语言编程基础(超详细)_第37张图片

rgb() rainbow() heat.colors() terrain.colors() 渐变色生成函数 【代码参见
mj4stu2(2).R 662 行】
2.
points() 在画布中添加点,参数有:
pch 表示点的样式,整数取值 0-25, 或自定义字符
bg ,点内部填充的背景色,仅限 21-25 样式的点
lwd ,点边框的宽度, 1 位正常的基准库看度

 第2章 R语言编程基础(超详细)_第38张图片

第2章 R语言编程基础(超详细)_第39张图片

3. 线
lines() 添加线条,参数有:
lty :线样, 0 不划线, 1 实线, 2 虚线, 3 点线
lwd :线宽, 1 是正常基准宽度
curve() :对 x 的表达式,也可以绘制曲线
abline() :添加参考直线
segments() 线段 arrows() 箭头
grid() 网格线 rug() 坐标轴须的分布

 第2章 R语言编程基础(超详细)_第40张图片

第2章 R语言编程基础(超详细)_第41张图片

 第2章 R语言编程基础(超详细)_第42张图片

第2章 R语言编程基础(超详细)_第43张图片

第2章 R语言编程基础(超详细)_第44张图片

 

第2章 R语言编程基础(超详细)_第45张图片

第2章 R语言编程基础(超详细)_第46张图片

第2章 R语言编程基础(超详细)_第47张图片

4.
title() 添加标题、 text() 在任意位置添加文本、 mtext() 在图形周边添加文本

 第2章 R语言编程基础(超详细)_第48张图片

第2章 R语言编程基础(超详细)_第49张图片

5.
legend() 添加图例,参数有:
表示位置可以有具体位置 c(x,y) 或者字符串表达
c("bottomright","bottom","left","top",...,"center")
第2章 R语言编程基础(超详细)_第50张图片

第2章 R语言编程基础(超详细)_第51张图片

6.
axis() :不用 R 默认的,创建自定义的坐标轴,参数有:
绘图参数 side :坐标轴所在的边, 1234 对应下左上右
at 刻度位置 VS labels 刻度标记向量
tick :是否画出 坐标轴刻度 ,默认为 T
tck :刻度线长度,赋值表示在图形外侧,默认为 -0.01

 第2章 R语言编程基础(超详细)_第52张图片

第2章 R语言编程基础(超详细)_第53张图片

2.4.4 图形组合与保存

1. 图形组合
par(mfrow=c(2,4)) 按行从左到右、绘制( 2x4=8 )幅图
layout() (略)

 第2章 R语言编程基础(超详细)_第54张图片

第2章 R语言编程基础(超详细)_第55张图片

2. 图形保存

第2章 R语言编程基础(超详细)_第56张图片

2.4.5 绘图案例

1. mtcars 为数据集
颜色设置

 第2章 R语言编程基础(超详细)_第57张图片

 第2章 R语言编程基础(超详细)_第58张图片

线形设置

第2章 R语言编程基础(超详细)_第59张图片

 第2章 R语言编程基础(超详细)_第60张图片

2. plot泛型类函数的演示

第2章 R语言编程基础(超详细)_第61张图片

第2章 R语言编程基础(超详细)_第62张图片 第2章 R语言编程基础(超详细)_第63张图片

3. 上证指数及上市个股的对数收益率分布特征
读取数据信息
第2章 R语言编程基础(超详细)_第64张图片

计算对数收益序列

第2章 R语言编程基础(超详细)_第65张图片 从各个个股数据框提取各自的收盘价格

 

绘制上证指数收益时间序列图、散点图、自相关图与偏自相关图

第2章 R语言编程基础(超详细)_第66张图片

第2章 R语言编程基础(超详细)_第67张图片

 绘制 Q-Q图、 经验累积分布ecdf图、 密度图、直方图

 第2章 R语言编程基础(超详细)_第68张图片

 第2章 R语言编程基础(超详细)_第69张图片

 第2章 R语言编程基础(超详细)_第70张图片

 第2章 R语言编程基础(超详细)_第71张图片

第2章 R语言编程基础(超详细)_第72张图片

2.5 常用程序包

R 程序包:时间 / 名称两种索引方式

2.5.1 标准包

含有 数据集、标准统计、图形工具 ,可以用 search() 函数查看

2.5.2 安装包

1. 安装 install.packages() ; R 菜单, packages>install
2. 加载 library() require() ; R 菜单, packages>(√) 程序包名
3. 更新 upadte.packages() ; R 菜单, packages>update
4. 在线帮助
查看包: Rstudio 中直接点击包名; R help(package=" 包名 ")
查看函数: ?function 或者 help(" 函数名 ",try.all.packages=T)
查看特殊符号: help(%%)
关键词搜索 ?? 关键词 help.search(" 关键词 ")

 第2章 R语言编程基础(超详细)_第73张图片

2.5.3 常用程序包
根据数据分析方法不同、分类: 统计、计量、实证、金融、时序 具体看课件

你可能感兴趣的:(R语言基础,r语言,开发语言)