我不习惯在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
循环
答案 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 ++。