在for循环中打破if循环并打印输出

时间:2014-07-07 04:56:35

标签: r loops

我有一个数据框,我想用if条件循环它。

head(d)
   col1 col2 col3
1   1   1  2.785561
2   2   1  5.765601
3   3   1  1.606134
4   4   1  3.475117
5   5   1  3.352561
6   6   1  2.849907
...
...
...

我想总结数据框中的每个值,如果值大于10,我想记录循环的索引并结束循环。我只想记录一个号码。我所拥有的是:

for (j in 1:nrow(d)){                     
    if (d[j,3] > 10){
      break } 
    output = j }

但输出值最终大于真实答案,应为3。

  output
[1] 17

2 个答案:

答案 0 :(得分:3)

更多方法是使用cumsumwhich

which(cumsum(d$col3) > 10)[1]
# [1] 3

答案 1 :(得分:0)

如果您想使用for循环,可以使用:

sum1 <- 0
for (j in 1:nrow(d)) {
sum1 <- sum1 + d$col3[j]
if (sum1 > 10) {
    break
  }
output = j + 1
} 

output
#[1] 3