决策结构要求程序员指定要由程序评估计算或测试的一个或多个条件,以及如果条件被确定为真(true
),则执行指定的一个或多个语句;可选地,如果条件被确定为假(false
)则执行其他语句。我们来看下大多数编程语言中的典型决策结构的一般形式的流程图:
R提供以下类型的决策语句:
序号 | 语句 | 说明 |
---|---|---|
1 | if语句 | 一个if 语句由一个布尔表达式,后跟一个或多个语句组成。 |
2 | if…else语句 | 一个if 语句可以跟随一个可选的else 语句,当布尔表达式为false 时,该else 中的语句将被执行。 |
3 | switch语句 | switch 语句允许测试一个变量,与一个值列表相比较。 |
先来看if语句,一个if
语句由一个布尔表达式,后跟一个或多个语句组成,在R语言中创建if
语句的基本语法如下:
if(boolean_expression) {
// statement(s) will execute if the boolean expression is true.
}
如果布尔表达式的值为真(true
),则if
语句中的代码块将被执行。如果布尔表达式的计算结果为假(false
),则if
语句结束后的第一组代码(在关闭大括号之后)将被执行,来看下流程图:
来看实例:
输出结果如下:
一个if
语句可以跟随一个可选的else
语句,当布尔表达式为false
时执行else
语句中的语句块代码,在R语言中创建if..else
语句的基本语法如下:
if(boolean_expression) {
// statement(s) will execute if the boolean expression is true.
} else {
// statement(s) will execute if the boolean expression is false.
}
如果布尔表达式求值为真(true
),那么将执行if
语句中的代码块,否则将执行else
语句中的代码块,来看下流程图:
示例如下:
输出结果为:
我们要注意下,这里 “Truth” 和 “truth” 是两个不同的字符串。
一个if
语句可以跟随一个可选的else if...else
语句,这对使用单个if...else else
语句来测试各种条件非常有用,当使用if
,else if, else
语句时我们要注意以下几点:
if
语句可以有零个或一个else
,但如果有else if
语句,那么else
语句必须在else if
语句之后。if
语句可以有零或多else if
语句,else if
语句必须放在else
语句之前。- 当有一个
else if
条件测试成功,其余的else...if
或else
将不会被测试。
如下在R中创建if...else if...else
语句的基本语法如下:
if(boolean_expression 1) {
// Executes when the boolean expression 1 is true.
} else if( boolean_expression 2) {
// Executes when the boolean expression 2 is true.
} else if( boolean_expression 3) {
// Executes when the boolean expression 3 is true.
} else {
// executes when none of the above condition is true.
}
示例如下:
输出结果为:
switch
语句允许测试一个变量,与一个列表中的值相比较。 每个值被称为情况(case
),并且对于每种情况检查被接通开关变量,在R语言中创建switch
语句的基本语法如下:
switch(expression, case1, case2, case3....)
我们来看下适用于switch
语句的一些规则:
- 如果表达式的值不是字符串,则被强制转化为整数。
- 在
switch
内可有任意数量的case
语句。 每个case
语句后跟要比较的值和冒号。 - 如果整数的值在
1
和nargs() - 1
(最大参数数)之间,则对条件的相应元素进行求值并返回结果。 - 如果表达式计算为字符串,则该字符串与元素的名称匹配(正好)。
- 如果有多个匹配,则返回第一个匹配元素。
- 没有默认参数可使用。
- 在不匹配的情况下,如果有一个未命名的元素,则返回其值。(如果有多个此类参数返回错误)。
来看下流程图:
示例如下:
输出结果为:
好啦,本次记录就到这里了。
如果感觉不错的话,请多多点赞支持哦。。。