R for 循环

在编程中,循环用于重复执行一段代码。循环可以帮助您节省时间,避免重复的代码块,并编写更简洁的代码。

在R中,有三种类型的循环


R for 循环

for循环用于迭代列表、向量或任何其他元素对象。for循环的语法是

for (value in sequence) {
  # block of code
}

在这里,sequence是一个元素对象,value接收其中的每个元素。在每次迭代中,代码块都会被执行。例如,

numbers = c(1, 2, 3, 4, 5)

# for loop to print all elements in numbers
for (x in numbers) {
  print(x)
}

输出

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

在此程序中,我们使用for循环遍历名为numbers的数字序列。在每次迭代中,变量x存储序列中的元素,并执行代码块。


示例1:计算偶数的数量

让我们使用for循环来计算存储在数字向量中的偶数的数量。

# vector of numbers
num = c(2, 3, 12, 14, 5, 19, 23, 64)

# variable to store the count of even numbers
count = 0

# for loop to count even numbers
for (i in num) { # check if i is even if (i %% 2 == 0) { count = count + 1 } }
print(count)

输出

[1] 4

在此程序中,我们使用for循环来计算num向量中偶数的数量。此程序的工作原理如下:

  • 我们首先将count变量初始化为0。我们使用此变量来存储num向量中偶数的数量。
  • 然后,我们使用for循环通过变量i遍历num向量。

    for (i in num) {
      # code block
    }
  • for循环内部,我们检查每个元素是否可被2整除。如果是,则将count1

    if (i %% 2 == 0) {
      count = count + 1
    }

示例2:带break语句的for循环

您可以使用break语句在任何迭代中退出for循环。例如,

# vector of numbers
numbers = c(2, 3, 12, 14, 5, 19, 23, 64)

# for loop with break
for (i in numbers) { # break the loop if number is 5 if( i == 5) { break } print(i) }

输出

[1] 2
[1] 3
[1] 12
[1] 14

在这里,我们在for循环中使用了一个if语句。如果当前元素等于5,我们使用break语句终止循环。之后,将不会执行任何迭代。


示例3:带next语句的for循环

您可以使用next语句跳过迭代,而不是终止循环。例如,

# vector of numbers
numbers = c(2, 3, 12, 14, 5, 19, 23, 64)

# for loop with next
for (i in numbers) { # use next to skip odd numbers if( i %% 2 != 0) { next } print(i) }

输出

[1] 2
[1] 12
[1] 14
[1] 64

在这里,我们在for循环中使用了一个if语句来检查奇数。如果数字是奇数,我们使用next语句跳过迭代,并且只打印偶数。


嵌套for循环

您可以在另一个for循环中包含一个for循环来创建嵌套循环。

请看下面的示例。假设我们有两个数字序列。我们想打印所有两个序列中的数字之和为偶数的组合。

# vector of numbers
sequence_1 = c(1, 2, 3)
sequence_2 = c(1, 2, 3)

# nested for loop
for (i in sequence_1) { for (j in sequence_2) { # check if sum is even if ( (i+j) %% 2 == 0 ) { print(paste(i, j)) } } }

输出

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

在上面的程序中,我们创建了两个序列:sequence_1sequence_2,它们都包含从13的数字。

然后,我们使用嵌套的for循环来迭代这些序列。外层循环迭代sequence_1,内层循环迭代sequence_2

for (i in sequence_1) {
  for (j in sequence_2) {
    # code block
  }
}

在每次迭代中,

  • i存储sequence_1的当前数字
  • j存储sequence_2的当前数字

嵌套循环中的if语句检查i + j是否为偶数。如果是,则打印ij

if ( (i+j) %% 2 == 0 ) {
  print(paste(i, j))   
}
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战