根据条件跳过for循环的多次迭代
我想根据条件跳过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(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)
}