根据条件跳过for循环的多次迭代

根据条件跳过for循环的多次迭代,r,for-loop,R,For Loop,我想根据条件跳过for循环中的迭代。直觉上我认为这会奏效: for(i in 1:10){ if(i %in% c(1,2,3,4,5)){ print(i) i <- i+2} } 但它却回来了 1 2 3 4 5 我知道为什么会发生这种情况 有没有另一种方法可以根据R中for循环中的条件跳过(多次)迭代?在R中增加循环中的计数器不仅仅是一种不好的做法。它根本不起作用。这不是语言的构建方式。如果要打印1和4,请尝试: for(i in seq(1,10,

我想根据条件跳过for循环中的迭代。直觉上我认为这会奏效:

for(i in 1:10){
  if(i %in% c(1,2,3,4,5)){
    print(i)
    i <- i+2}
}
但它却回来了

 1
 2
 3
 4
 5
我知道为什么会发生这种情况


有没有另一种方法可以根据R中for循环中的条件跳过(多次)迭代?

在R中增加循环中的计数器不仅仅是一种不好的做法。它根本不起作用。这不是语言的构建方式。如果要打印1和4,请尝试:

for(i in seq(1,10,by=3) ){
  if(i %in% c(1,2,3,4,5)){
    print(i)
  }
}
还要注意for循环实际上返回NULL。打印到控制台会有副作用,但变量的值不会改变。如果想要更改值,则需要在循环内执行赋值

这是一个
下一个
控制语句:

for(i in seq(1,10) ){
  if( !(i %in% c(1,4)) ){ next }
  print(i)
}

直接这样做有什么不对<代码>用于(i在1:10中){if(i%在%c(1,4)){print(i)}}
。代码无法工作的原因是,使用
i在循环本身内部增加for循环索引是一种不好的做法。使跟踪事物变得非常混乱。使用
while()
并在循环内递增,或者使用
for()
但不要手动递增。或者更好(特别是R):矢量化你的代码谢谢你的评论!虽然这对这个小例子有效,但对我遇到的实际问题却不起作用。我需要根据条件跳过迭代,我事先不知道在哪些迭代中满足这些条件。有一个
next
控制语句可以跳到下一个循环迭代器。要查找
for
next语句的帮助页面,请键入
?“for”`
for(i in seq(1,10) ){
  if( !(i %in% c(1,4)) ){ next }
  print(i)
}