《新媒体数据挖掘-基于R语言》04.R语言基础---代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

23 of 40
4.2 R的流程可控制
示例: x <-switch(3, "first", "second", "third", "fourth") print(x) 结果: [1] "third"
第四章 R语言基础---代码
24 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
4.2.3 循环结构
考察顺序流程的R代码: print("我是第一句话,我显示在前面"); print("我是第二句话,我显示在后面"); 运行结果: >print("我是第一句话,我显示在前面"); [1] "我是第一句话,我显示在前面" >print("我是第二句话,我显示在后面"); [1] "我是第二句话,我显示在后面"
要使得计算机按人们预先安排的步骤进行工作,就要解决人机交流的问题。人们给计 算机一系列的命令,计算机按给定的命令一步步地工作,这种命令就是人机交流的语言,称 为程序设计语言或计算机语言。显然,程序设计语言是人类语言逻辑的抽象,其在宏观上也 符合人类语言逻辑的三种流程:顺序、选择/分支(有的书上叫“决策”)、循环。R语言也不 例外。这一节我们学习如何使用流程控制来组织前面学到的基本语句,让R来完成更复杂的 计算/处理任务。
许多情况下,你需要将同一段代码执行多次,循环语句允许我们多次执行一个语句或 一组语句。如图所示,我们就能体会到循环结构的威力。针对顺序执行语句,可先执行第一 个语句,然后执行第二个语句,依此类推。但编程语言提供允许更复杂的执行路径的各种控 制结构。,如图4-6所示,是大多数编程语言中循环语句的一般形式:
•如果可以有零或一个else,它必须在任何其他if之后。 • 一个if可以有0到许多else if和它们必须在else之前。 • 一旦一个else如果成功,没有任何剩余的else if或else将被测试。
语法形式: if(表达式1){ 语句1; }else if(表达式2){ 语句2; } ...... }else { 语句n; }
新媒体数据挖掘---基于R语言
第四章 R语言基础---代码
4.1 R代码的基本单位:语句=数据+运算符; 4.2 R的流程控制 4.3 R代码复用---函数和过程 习题
2 of 40
4 . 1 R 代 码 的 基 本 单 位 : 语 句 = 数 据 + 运 算 符 ; 第四章 R语言基础---代码
4 of 40
4 . 1 R 代 码 的 基 本 单 位 : 语 句 = 数 据 + 运 算 符 ; 第四章 R语言基础---代码
1. 算术运算符
5 of 40
4.1 R代码的基本单位:语句=数据+运算符;
2. 关系运算符
第四章 R语言基础---代码
6 of 40
4.1 R代码的基本单位:语句=数据+运算符;
3. 逻辑运算符
第四章 R语言基础---代码
7 of 40
4.1 R代码的基本单位:语句=数据+运算符;
4. 赋值运算符
第四章 R语言基础---代码
8 of 40
4.1 R代码的基本单位:语句=数据+运算符;
5. 其他运算符
第四章 R语言基础---代码
9 of 40
4.1 R代码的基本单位:语句=数据+运算符;
语法形式为: switch(expression, case1, case2, case3....)
22 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
switch语句的注意规则: •如果expression的值不是字符串,那么它被强制为整数。 •在交换机中可以有任意数量的case语句。每个案例后面都跟要比较的值和冒号。 • 如果整数的值在1和nargs()- 1(参数的最大数目)之间,则对case条件的相应元素求值 并返回结果。 •如果表达式求值为字符串,那么该字符串与元素的名称匹配。 •如果有多个匹配,则返回第一个匹配元素。 •无默认参数可用。 •在没有匹配的情况下,如果有一个未命名的元素...它的值被返回。 (如果有多个这样的 参数,则返回错误。)
单选择和双选择结构(多选择结构可由选择结构迭代而形成)
17 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
1. 单选择结构
if语句由一个布尔表达式后跟一个或多个语句组成。如果表达式的计算结果为true,那 么if语句中的代码块将被执行。语法形式:if(条件)语句;
示例: job<-"文科生" if( job=="文科生"){print("必须学习R!")} 结果: [1] "必须学习R!"
statement }
示例: v <- c("Hello","while R") cnt <- 2 while (cnt < 6){
流水账 顺序流程
如果拿我的矛插我的盾 选择流程
我的第三个愿望是“再给我三个愿望” 选择流程
15 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
4.2.1 顺序结构
顺序结构就好比是“流水账日记”。事实上,计算机程序在宏观(内部硬件决定)上天然 地遵循“从上到下、先来后到”的“逐条逐句顺序执行”的方式。在任何编程语言中,顺序 流程不需要任何语法结构进行控制。
一般来说,运算符的优先级从高到底为:算术、关系、逻辑、赋值;而运算符的结合 性大多数为从左向右(优先对左操作数起作用),少数(例如赋值)运算符为从右向左。
例如代码:a=1+(1-1&&2)+3 运行结果: [1] 1
10 of 40
4.1 R代码的基本单位:语句=数据+运算符;
6. 运算符的两个性质
更重要的是,如果给语句块以标识符命名,则可以形成4.3中所述的函数,实现将一组 逻辑相关的语句(问题的解决过程)封装为函数表达式语句,大大提高代码复用的效率。事实 上,这就是“面向过程”的编程思想实现。
WhatisR<- function(){ print("什么是R?"); print("一种带有编程功能的统计软件!");
} WhatisR(); 运行结果: [1] "什么是R?" [1] "一种带有编程功能的统计软件!"
13 of 40
第四章 R语言基础---代码
4.1 R代码的基本单位:语句=数据+运算符; 4.2 R的流程控制 4.3 R代码复用---函数和过程 习题
14 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
有了数据,接着就要考虑如何形成程序(可执行代码),下图学习路线图可知, 除了输入和输出之外,以“运算符”操作“数据类型”即可形成语句(对数据做运 算,即构成程序的最小的组成单位)。针对语句,再施加以流程控制(顺序、分支、 循环),即可实现复杂的程序逻辑;还可以将一组逻辑相关的语句封装为一个函数, 方便代码的重复使用。运算符、语句、流程控制、函数等,便是本章的主要学习内 容。
R语言语法的学习线路图
3 of 40
4 . 1 R 代 码 的 基 本 单 位 : 语 句 = 数 据 + 运 算 符 ; 第四章 R语言基础---代码
4.1.1 运算符号 运算符是一个符号,通知编译器执行特定的数学或逻辑操作。R语言中拥有如下几种运
算符类型:算术运算符、关系运算符、逻辑运算符、赋值运算符、其他运算符。
25 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
4.2.3 循环结构
图1是大多数编程语言中循环语句的一般形式,编程语言提供允许更复杂的执行路径的 各种控制结构(图2、图3、图4)。
26 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
1. repeat循环
repeat循环重复执行相同的代码,直到满足停止条件。语法形式为: repeat { 语句
print("No truth found") } 结果: [1] "truth is found the second time"
第四章 R语言基础---代码
21 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
4. 分支结构
如图所示,switch语句用以实现分支结构,允许根据值列表测试变量的相等性。每个 值都称为大小写,并且针对每种情况检查打开的变量。
示例: job<-"文科生" if( job=="程序员"){print("学习python");
}else{ print("学习R"); } 结果: [1] "学习R"
19 of 40
4.2 R的流程可控制
3. 多选择结构
第四章 R语言基础---代码
if语句后面可以跟一个可选的else if ... else语句,这对于使用single if ... else if语句测 试各种条件非常有用。当使用if...else if...else语句有几点要记住。
6. 运算符的两个性质
第四章 R语言基础---代码
任何计算机编程语言的运算符都有两个性质,R语言也不例外,事实上连我们小时候做 的算术运算(自然语言和数学语言)也不例外。这两个性质就是:优先级和结合性:
•优先级:决定了复杂表达式中多个运算符同时存在时,运算符起作用的先后顺序; •结合性:决定了运算符左右同时存在操作数时,运算符对哪个操作数起作用。
{ print("什么是R?"); print("一种带有编程功能的统计软件!");
} 运行结果: [1] "什么是R?" [1] "一种带有编程功能的统计软件!"
12 of 40
4 . 1 R 代 码 的 基 本 单 位 : 语 句 = 数 据 + 运 算 符 ; 第四章 R语言基础---代码
4.1.2 表达式、语句、语句块
第四章 R语言基础---代码
分析: 运算符遵循“先括号内,再括号外”,因此先考察(1-1&&2)部分; 由于算术运算“-”优先于逻辑运算“&&”,计算1-1得到0,因此a=1+(11&&2)+3演变为a=1+(0&&2)+3; 0&&2得到FALSE,因此a=1+(0&&2)+3演变为a=1+0+3,即a=1+3; 由于算术运算“&&”优先于赋值运算“=”,计算1+3得到4,因此a=1+3演变 为a=4; 由于赋值运算符“=”的结合性是从右向左,因此4被赋予给变量a。
16 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
4.2.2 选择结构
寓言故事《自相矛盾》中的“如果...那么....”就是典型的条件或选择构。如下图所示, 选择或选择结构要求程序员指定要由程序评估或测试的一个或多个条件,以及如果条件被确 定为真则要执行的一个或多个语句,如果条件为假则执行其他语句。
18 of 40
4.2 R的流程可控制
第四章 R语言基础---代码
2. 双选择结构
if语句后面可以是一个可选的else语句,当布尔表达式为false时执行。如果布尔表达 式的计算结果为真,则将执行if代码块,否则将执行else代码块。语法形式:
if(表达式){ 语句1; }else { 语句2; }
20 of 40
4.2 R的流程可控制
3. 多选择结构
示例: x <- c("what","is","truth") if("Truth" %in% x){
print("Truth is found the first time") } else if ("truth" %in% x){
print("truth is found the second time") } else {
11 of 40
4 . 1 R 代 码 的 基 本 单 位 : 语 句 = 数 据 + 运 算 符 ; 第四章 R语言基础---代码
4.1.2 表达式、语句、语句块
正所谓“一生二、二生三、三生万物”,如前所述,运算符作用于数据形成了“表达 式”,表达式加上分号分隔符形成了可以执行的“语句”,用花括号“{}”将一组逻辑相关 的语句进行封装将形成可整体执行的“语句块”。
if(表达式){ break
} }
示例: v <- c("Hello","R") cnt <- 2 repeat {
print(v) cnt <- cnt+1 if(cnt > 5){
break } }
27 四章 R语言基础---代码
2. while循环
while循环一次又一次地执行相同的代码,直到满足停止条件。语法形式为: while (test_expression){
相关文档
最新文档