首页 > 解决方案 > 在 for 循环中跳过迭代

问题描述

我试图在 for 循环中跳过一些迭代:

Lines <- "
 time   Temperature
  1         38.3
  2         38.5
  3         38.9
  4         40.1
  5         38.0
  6         38.6
  7         37.9
  8         38.2
  9         37.5
  10        38.0"
DF <- read.table(text = Lines, header = TRUE)

for (i in unique(DF$time)){
 ix=which(i==DF$time)
 if(DF$Temperature[ix] > 38.65)  ix=ix+3
 print(ix)
}

但我没有得到想要的输出。它没有跳过迭代。相反,它只是覆盖它,以便我得到两次迭代。

输出:

[1] 1
[1] 2
[1] 6
[1] 7
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

期望的输出:

[1] 1
[1] 2
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

更新:

i=1
while(i<=DF$time){
  if(DF$Temperature[i] > 38.65){  
    print(i)
    i=i+3}
    i=i+1
}

这就是我尝试过的。但显然是错的。之前没用过。有人能帮我吗?

标签: rfor-loop

解决方案


我认为你forwhileR 中的子句感到困惑。这基本上就是你想要做的:

ix <- 1
while(ix <= 10) {
  if (DF$Temperature[ix] > 38.65) {
    ix = ix + 3
    print(ix)
  } else{
    print(ix)

  }
  ix = ix + 1
}

用@jogo的更正编辑


推荐阅读