R:如何在for循环中递增递增变量?

时间:2016-09-18 10:59:48

标签: r loops increment

我正在尝试在满足条件时手动递增 i 变量。

for(i in 1:x){
   if(condition){
      i <- i + 2
      }
   }

调试时,(i&lt; -i + 2)行肯定在运行,但我仍然只增加1而不是3.(来自行的+2和来自自动增量的额外+1)< / p>

当我在循环中时,如何增加?

5 个答案:

答案 0 :(得分:2)

所以基本上你想根据条件跳过一些循环迭代。这是一个合理的设计选择,但如果必须,你需要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)
}

答案 1 :(得分:0)

运行循环时,变量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
}

答案 2 :(得分:0)

创建序列后,您几乎失去了对循环的大量控制。在这种情况下,我将其更改为while循环,然后在循环结束时执行条件递增/递减。

答案 3 :(得分:0)

我同意joris-meys,这是“皱眉头”。但是...一种更简单的方法是:

for(i in (0:3)*2+1){
  cat(i," ")
}

for(i in (1:4)){
  cat(i," ")
}

答案 4 :(得分:-2)

for(i in seq(0, 10, 2) ){
  print(i)
}

you can do this..