购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 决策语句

决策语句是一类可以控制程序按条件执行不同代码块的语句。在R语言中,决策语句主要包括if语句和switch语句。

2.1.1 if语句

由if语句引导的选择结构有if结构、if...else结构和if...else if...else结构三种。

1 if结构

if结构流程如图2-1所示,首先测试条件表达式,如果为TRUE则执行代码块,否则就执行if语句结构后面的语句。

图2-1 if结构流程

if结构语法如下。

if结构示例代码如下。

这段代码的作用是从控制台读取用户输入的整数,并判断这个整数是否大于5。

上述示例代码解释如下。

代码第①行中使用readline()函数从控制台读取用户的输入,输入会作为字符串返回。然后使用as.integer()函数将字符串转换为整数,并将结果保存到变量x中。

上述示例代码运行到第①行时,程序会挂起,等待用户输入,如图2-2所示。如果我们输入一个有效的整数,然后按Enter键,程序会继续执行。程序运行结果如图2-3所示。

图2-2 程序会挂起等待用户输入

图2-3 程序运行结果

2 if...else结构

if...else结构流程如图2-4所示,首先测试条件表达式,如果值为TRUE,则执行代码块1,如果条件表达式为FALSE,则忽略代码块1而直接执行代码块2,然后继续执行后面的语句。

图2-4 if...else结构流程

if...else结构语法如下。

if...else结构示例代码如下。

上述代码的解释如下。

(1)提示输入考试分数。

(2)读取输入score变量。

(3)根据score值判断分数及格或不及格并打印。

读者可以自己运行上述代码,具体过程这里不再赘述。

3 if...else if...else结构

if...else if...else结构实际上是if...else结构的多层嵌套,它的特点是在多个分支中只执行一个分支中的代码块,而其他分支都不执行,所以这种结构可以用于有多种判断结果的分支中。

if...else if...else结构语法如下。

if...else if...else结构示例代码如下。

上述代码从控制台读取用户输入的分数,然后转换为F~A等级。

上述示例代码解释如下。

代码第①行NA 代表“Not Available”(不可用),是一种特殊的值,用于表示空值或缺失值。

读者可以自己运行上述代码,具体过程这里不再赘述。

2.1.2 switch语句

if...else if...else结构使用起来很麻烦,R语言还提供了switch语句实现多个分支的条件判断,其基本形式如下。

switch 语句必须遵循下面的规则。

switch 语句中的 expression表达式结果值,可以是整数或字符串。

如果是整数则返回对应的case位置值,如果整数不在位置的范围内则返回 NULL。如果是字符串,则对应的是case中的变量名对应的值,没有匹配则没有返回值。

switch 没有默认参数可用。

(1)switch 表达式结果值是整数时的示例代码如下。

上述代码允许用户从控制台输入一个整数(1到7之间的值),然后根据输入的整数值选择并显示相应的消息。

上述示例代码的具体运行过程不再赘述。

(2)switch 表达式结果值是字符串时的示例代码如下。

上述代码允许用户从控制台输入一个星期几的中文名称,然后根据输入的星期几来选择不同的消息进行输出。

上述示例代码的具体运行过程不再赘述。 451Lq15g4c4eSagLno++AzgKPY8oi3ODFyyQjm2xRxNwAmxOFAU64h1SxRbSfAqY

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开