R:在循环内设置循环索引

时间:2015-08-31 06:54:16

标签: r loops

我想设置一个从1到10运行的循环。然后在循环内我想要改变索引,以便跳过迭代6和7,并用迭代8,9和10完成循环。

for (i in 1:10) {
  print(i) 
  if (i == 5) {
    i <- 8
    print(i)
  }
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 5
[1] 8
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

显然,我的第i行之后的1 <- 8由函数for设置为6.有什么方法可以阻止这种情况吗?

3 个答案:

答案 0 :(得分:4)

当你在谈论跳过时,最好的想法是在你希望跳过的值上使用next:

for (i in 1:10) {
  if (i %in% c(6,7)) {
    next
  }
  print(i) 
}

来自help("for")

  

next停止当前迭代的处理并推进   循环索引。

另一种选择是限制你的循环范围,如下所示:

for(i in c(1:5,8:10)) {
  print(i)
}

答案 1 :(得分:1)

你可以这样做:

i=1
while (i<=10) {
  print(i) 
  if (i == 5) {
    i <- 8
  }else i<-i+1
}

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 8
[1] 9
[1] 10

答案 2 :(得分:0)

有两种方法可以做到这一点:

for( i in 1:10) {
    if(i!=6 && i!=7) {
        print(i)
    }
}

另一个是:

i = 1
while(i<=10) {
  print(i) 
  if(i == 5) {
    i <- i + 3
  } else {
    i <- i+1
  }
}