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

5.3 循环语句

在日常生活中很多问题都无法一次性解决,需要循环往复地重复多次才能完成。例如,盖楼需要一层层地盖,每层的建筑方式是类似的;公交车、地铁等交通工具必须每天往返于始发站和终点站之间。类似这样反复做同一件事的情况称为循环。

在R语言中,循环语句有4种类型,下面分别进行介绍。

5.3.1 repeat语句

repeat循环就是重复地、一次又一次地执行相同的任务,直到满足停止条件。这就好比我们绕着操场跑圈,一圈又一圈,直到第5圈停止。

在R语言中,repeat语句的语法格式如下:

     repeat {
     循环体
     if(条件表达式) {
     break
     }
     }

repeat循环语句的执行流程如图5.8所示。

图5.8 repeat循环语句流程图

【例5.5】 操场跑圈计数 (实例位置:资源包\Code\05\05)

下面使用repeat循环记录操场跑圈,直到第5圈停止,运行RStudio,编写如下代码。

运行程序,结果如图5.9所示。

图5.9 操场跑圈计数

5.3.2 while语句

在while循环中,只要满足条件就会一遍又一遍地执行相同的代码;直到不满足条件时,退出循环。语法格式如下:

     while (条件表达式) {
         循环体
     }

while循环语句的执行流程如图5.10所示。

图5.10 while循环语句流程图

【例5.6】 while循环记录操场跑圈 (实例位置:资源包\Code\05\06)

下面使用while循环记录操场跑圈,直到第5圈停止,运行RStudio,编写如下代码。

     1  # 初始值为1
     2  n <- 1
     3  while (n <6 ){
     4      print(paste("第",n,"圈"))
     5      # 计数
     6      n <- n+1
     7  }

运行程序,结果如图5.11所示。

图5.11 while循环记录操场跑圈

5.3.3 for语句

for循环是一个计次循环,一般应用在循环次数已知的情况下。通常适用于枚举或遍历序列,以及迭代对象中元素的情况。语法格式如下:

     for (迭代变量 in 向量表达式) {
         循环体
     }

在R语言中,for循环语句特别灵活。其中,迭代变量用于保存读取的值;向量表达式通常是一个序列,可以是整数或输入的数字、字符向量、逻辑向量、列表或表达式。

for循环语句的执行流程如图5.12所示。

图5.12 for循环语句流程图

【例5.7】 输出1~12月份 (实例位置:资源包\Code\05\07)

下面使用for循环语句输出1~12月份,运行RStudio,编写如下代码。

     1  a <- c(1:12)
     2  for ( i in a) {
     3      print(paste(i,"月"))
     4  }

运行程序,结果如图5.13所示。

图5.13 输出1~12月份

【例5.8】 求1~100所有数的和 (实例位置:资源包\Code\05\08)

下面使用for循环计算1~100所有数的和,运行RStudio,编写如下代码。

     1  myval <- 0             # 初始值为0
     2  for(i in 1:100){       # 求1~100所有数的和
     3      myval = myval + i
     4  }
     5  print(myval)

运行程序,结果为5050。

5.3.4 replication()函数

replicate()函数可以重复指定次数执行表达式。语法格式如下:

     replicate(n, expr)

参数说明如下。

n:重复执行次数。

expr:待执行的表达式。

【例5.9】 重复一个值多次 (实例位置:资源包\Code\05\09)

在实际数据分析中,replicate()函数应用十分广泛。下面使用replicate()函数将1重复10次,运行RStudio,编写如下代码。

     replicate(n=10, 1)

运行程序,结果如图5.14所示。

【例5.10】 使用replicate()函数生成数据 (实例位置:资源包\Code\05\10)

下面借助replicate()函数重复生成5次样本数据,每个样本数据包括10个平均值为5,标准差为3的符合正太分布的数据。运行RStudio,编写如下代码。

     1  # 生成10个平均值为5,标准差为3的符合正态分布的数据
     2  # 重复5次
     3  data <- replicate(n=5, rnorm(10, mean=5, sd=3))
     4  # 显示数据
     5  data

代码解析

第3行代码:rnorm()函数用于生成服从正态分布的随机数。默认生成平均数为0,标准差为1的随机数。

运行程序,结果如图5.15所示。

图5.14 1重复10次

图5.15 使用replicate()函数生成数据 9X+OFjKLAI4TgrkNKnCBMZXI8IWqDk0l81Gf7sz2bb3I0W12v99Y2rcHTWMobjVK

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