我想根据条件跳过for循环中的迭代。直觉上我认为这会起作用:
for(i in 1:10){
if(i %in% c(1,2,3,4,5)){
print(i)
i <- i+2}
}
我希望它返回
1
4
但它会返回
1
2
3
4
5
我知道为什么会这样。
是否有其他方法可以根据R?中的for循环中的条件跳过(多次)迭代?
答案 0 :(得分:2)
在R中循环增加计数器不仅仅是不好的做法。它根本不起作用。这不是语言的构建方式。如果你想打印1和4,请尝试:
for(i in seq(1,10,by=3) ){
if(i %in% c(1,2,3,4,5)){
print(i)
}
}
还要注意for循环实际上返回NULL。打印到控制台会有副作用,但变量值不会改变。如果要更改值,则需要在循环内进行赋值。
是next
控制声明:
for(i in seq(1,10) ){
if( !(i %in% c(1,4)) ){ next }
print(i)
}
答案 1 :(得分:-1)
事实上,根据@a p o m的评论,解决方案毕竟非常简单:
i <- 1
while(i <= 10){
if(i %in% c(1,2,3,4,5)){
print(i)
i <- i+2}
i <- i+1
}
不敢相信我自己也没有想过这个!