目录
前言
循环也是一种控制结构,它允许在一行中一部分代码被多次执行,直到一个退出条件被满足或者达到了事先指定的循环次数才会中止运行.
在R中有三种循环指令:for,while和repeat.此外,保留字next和break能对代码的执行给出额外的控制.指令break会立即跳出当前的循环;指令next将程序的执行返回到循环的起点,使得循环的下一次迭代(如果存在的话)开始执行,而对于当前的迭代,next后的指令不会再执行.
1.for循环
for 函数的使用格式为:
for(var in seq) expr
例如构造一个 4 阶的 Hilbert 矩阵
n = 4;x = array(0,dim = c(n,n))
for(i in 1:n){
for(j in 1:n){
x[i,j] = 1/(i+j-1)
}
};x
结果展示
[,1] [,2] [,3] [,4]
[1,] 1.0000000 0.5000000 0.3333333 0.2500000
[2,] 0.5000000 0.3333333 0.2500000 0.2000000
[3,] 0.3333333 0.2500000 0.2000000 0.1666667
[4,] 0.2500000 0.2000000 0.1666667 0.1428571
2.while函数
while 函数的使用格式:
while(cond) expr
例如编写一个计算 1000 以内的 Fibonacci 数
f = c(1,1);i = 1
while(f[i] + f[i+1] < 1000){
f[i+2] = f[i] + f[i+1]
i = i+1
};f
结果展示
> f = c(1,1);i = 1
> while(f[i] + f[i+1] < 1000){
+ f[i+2] = f[i] + f[i+1]
+ i = i+1
+ };f
[1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
3.repeat 函数
repeat 函数使用格式为:
repeat expr
注:repeat 函数依赖中止语句(break)跳出循环.
例如使用 repeat 编写一个计算 1000 以内的 Fibonacci 数,结果展示
> repeat{
+ f[i+2] = f[i] + f[i+1]
+ i = i+1
+ if(f[i] + f[i+1] >=1000) break
+ }
> f
[1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
总结
R语言的循环结构通常用于处理迭代库、文件操作、数学等任务以及数据分析等数据密集型任务。其它研究领域也会用到类似结构。本文介绍了三种基本的 R 语言循环结构:for、while 和 repeat。了解不同类型的循环结构可使您根据具体问题选择合适的方案。