R中的循环

时间:2020-02-23 14:43:50  来源:igfitidea点击:

在编程的大多数时间里,我们需要对向量中的所有元素执行相同的操作或者多次执行相同的操作集。
编程中的循环语句就是为此目的而设计的。
R支持两种循环,即" for"循环和" while"循环。
本文阐明了用于编程的" for"循环的结构和用法。

R中for循环的结构

R中" for"循环的一般结构如下。

for(index in range or vector){
#Write the code to repeat here
}

  • 值索引是我们希望循环运行多少次的指标。

  • 该范围设置循环运行次数的上限。
    该次数在计算机科学中被称为"迭代"。

  • 我们需要多次执行的动作放在花括号之间。
    这可以是我们选择的任何东西。

现在,我们首先使用简单的打印语句来说明for循环的运行。

简单的R for循环示例

for(index in 1:5){
print("Begin loop")
print(index)
print("End loop")
}

  • 变量" index"是一个临时变量,不需要在循环外定义或者初始化。

  • 第一次出现时," index"将设置为起始值或者范围(此处设置为1到5)。
    因此," index"值最初为1。

  • 每次循环运行时,index的值都会增加1,直到达到上限5。

  • 现在让我们看看输出如何查找此循环。

输出:

[1] "Begin loop"
[1] 1
[1] "End loop"
[1] "Begin loop"
[1] 2
[1] "End loop"
[1] "Begin loop"
[1] 3
[1] "End loop"
[1] "Begin loop"
[1] 4
[1] "End loop"
[1] "Begin loop"
[1] 5
[1] "End loop"
> 

请注意,只要索引值小于或者等于5,我们在循环的开始和结束处放置的哨兵打印语句将对每次迭代运行。

在R中使用向量的for循环

For循环也可以用于在R中向量中的元素之间循环。
回想一下,向量是使用c(element1,element2 ...)格式定义的。

让我们看一下一个for循环,该循环读取并显示向量中的每个元素。

vec <- c(2,5,6,1,7,8,9)
 for(val in vec){
 print(val)
 }

输出:

[1] 2
[1] 5
[1] 6
[1] 1
[1] 7
[1] 8
[1] 9

变量" val"会在每次迭代时逐步获取向量中每个元素的值,并将其显示在循环体内。
当我们将来处理更大的数据结构时,这将被证明是一个重要的功能,我们将在以后的工作中看到这一点。

嵌套在R中的循环

对于一维向量,如上面的维,对于一个循环变量就足够了。
但是,当我们处理多维向量(例如矩阵)时,每个维度都需要一个变量。
保持一个索引不变,我们可以遍历矩阵/矢量的所有子维度。
在下面的示例中可以对此进行说明。

for(i in 1:4){
for(j in 1:3){
  print(i*j)
}
cat("\n")
}

我们在这里遍历两个变量。
首先,对于i值1,内部循环从j值1到j值3。
每次打印i和j的乘积。
接下来,i值增加到2,j再次从1到3。
这一直持续到i值用尽为止。

为了方便理解,cat(" \ n")行仅在内部循环执行的每个循环之间放置一条新行。

现在让我们看一下该循环的输出。

输出:

[1] 1
[1] 2
[1] 3

[1] 2
[1] 4
[1] 6

[1] 3
[1] 6
[1] 9

[1] 4
[1] 8
[1] 12