[英]R: How to increment the incrementing variable within a for loop?
我试图在满足条件时手动增加i变量。
for(i in 1:x){
if(condition){
i <- i + 2
}
}
调试时, (i<-i+2) 行肯定正在运行,但 i 仍然只增加 1,而不是 3。(行中的 +2 和自动增量中的额外 +1)
当我在循环中时如何增加?
所以基本上你想根据条件跳过一些循环迭代。 这是一个理所当然地不赞成的设计选择,但如果必须,您需要next
。 以下代码跳过了第三次、第五次和第七次迭代:
for(i in 1:10){
if(i %in% c(3,5,7)){
next
}
print(i)
}
假设您需要根据特定条件以 3 递增,那么您可以使用一个临时变量来帮助您跳过一些步骤。 请注意,这确实会经历每次迭代,它只是及时中断迭代:
skip <- 0 # the temporary variable helping us keeping track of the iterations
for(i in 1:10){
if(i == 5){ # the condition that causes the skip
skip <- 3
}
if(skip > 0){ # the control that skips as long as necessary
skip <- skip - 1
next
}
print(i)
}
运行循环时,变量i
值存储在tmp*
。 这意味着每当我们到达循环顶部时, i
都会重置。 例如
for(i in 1:2){
message(i)
i <- 10
message(i)
}
#1
#10
#2
#10
为了得到你想要的东西,你可以有这样的东西:
k =1
for(i in 1:10){
if(condition) k <- k + 2
}
一旦创建了序列,您就几乎失去了对循环的很多控制。 在这种情况下,我将其更改为 while 循环,然后在循环结束时进行条件递增/递减。
我同意 joris-meys 的观点,这是“不赞成”的。 但是......更简单的方法是:
for(i in (0:3)*2+1){
cat(i," ")
}
或者
for(i in (1:4)){
cat(i," ")
}
for(i in seq(0, 10, 2) ){
print(i)
}
你可以这样做..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.