在循环中提取for循环的结果 - r

时间:2015-03-22 17:54:51

标签: r

我不习惯在R中编写while循环。想知道如果有人能告诉我如何从这个简化版本中获得i的第一个结果:

我尝试将i存储为矢量。

基本上,我想知道从1到100的第一个数字

(z -i)/ 10小于9

z <- 100
p <- z/10
myi <- NULL

while(p>=9){

  for(i in 1:100){
    myi[[i]] <- i
    p <- (z-i)/10
  }
break()
}

当这个打破时,p = 0,我不知道为什么。我想要返回的是11,即(z-1)/ 10不大于或等于9的第一个例子。

如果我返回myi,它只显示1到100之间的每个数字。谢谢。

修改

我对这个问题的其他快速方法感兴趣 - 以下是我能解决的最快问题:

which.max(sapply(seq_along(1:100), function(x) (z-x)/10 < 9))

但仍想了解如何使用while循环

来完成此操作

1 个答案:

答案 0 :(得分:3)

使用while循环完成此任务有两种常规方法。第一种是在while循环的条件语句中测试你想要的条件,如:

#initialize i
i = 1
while((z-i)/10 < 9)# test for the condition of interest 
    # incremenet i
    i = i + 1

第二个是使用while(TRUE)循环,并测试while循环体中的条件,如果满足条件则跳出循环,如:

#initialize i
i = 1
while(TRUE) {
    # test for the condition of interest
    if((z-i)/10 < 9)
        # break if the condition is met
        break
    # incremenet i
    i = i + 1
}

在这两个解决方案中i是满足您条件的第一个值。另请注意,break用作关键字而不是函数调用。

同样可能是比这个解决方案快得多的唯一方法就是在接受this question的响应中实现C ++。