3.3 循环控制与条件控制
R具有标准的编程语言控制结构。一般情况下,R按顺序执行,依据条件做出是否执行或者反复执行的处理。本节将依次介绍循环控制和条件控制。
1.循环控制
循环控制就是在条件达成之前重复执行一系列语句。R语言中循环控制的方式主要有两种:for循环和while循环。
(1)for循环
R中最基本的循环控制方式是for循环,其中i为循环变量,n通常是一个序列。i在每次循环时从n中顺序取值,代入到后面的语句中进行运算,直到i超出n的范围,循环停止。计算斐波那契数列前10位数字的for循环代码示例如下:

(2)while循环
当不能确定循环次数时,需要用while循环语句。在条件为真时,R执行特定一组的语句。下面是以while循环来计算10个斐波那契数的代码示例:

2.条件控制
在条件控制中,语句仅在满足特定条件时执行,条件不满足,则执行结束。条件控制有三种:if-else、ifelse、switch。
(1)if-else
if语句的语法为:

if-else语句用来进行条件控制,以执行不同的语句。若condition条件为真,则执行语句1,否则执行语句2。if-else()函数能以简洁的方式构成条件语句。需要注意的是,else必须放在“}”后面,不可以换行,否则R会认为代码到此结束。
(2)ifelse
ifelse是if-else的向量化版本,在对向量进行赋值时非常便捷。常用代码示例如下:

其中,参数test为条件判断语句;参数yes在条件test为TRUE时执行;参数no在条件为FALSE时执行。
(3)switch
R中的switch与其他语言中的switch有一定区别。在R中,switch函数的常用形式如下:
![]()
其中,expr为表达式,其值为一个整数值或一个字符串;list为一个列表。此函数的运行逻辑为:若expr的计算结果为整数,且值在1与length(list)之间,则switch()函数返回列表相应位置的值;若expr的值超出范围,则没有返回值(若R版本较老,则返回NULL)。