我想设置一个从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.有什么方法可以阻止这种情况吗?
答案 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
}
}