2014-07-07 3 views
0

데이터 프레임이 있고 if 조건으로 루프를 수행하고 싶습니다.for 루프에서 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 
... 
... 
... 

나는 dataframe에서 각 값을 요약하고 싶은 값은 내가 루프의 인덱스를 기록하고 루프를 종료 할 10보다 큰 얻는 경우에. 한 번호 만 기록하고 싶습니다. 내가 가지고있는 것은 :

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

하지만 출력 값이 있어야 진짜 대답,보다 큰 끝 3.

output 
[1] 17 
+0

감사합니다! 이것은 효과가 있었다. – user3141121

답변

3

이 작업을 수행하는 더 방법은 cumsum을 사용하는 것입니다 및 which : 당신이 for 루프를 사용하려면

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

+1 루프를 단순화하기 위해 – akrun

0

, 당신은 사용할 수 있습니다

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

output 
#[1] 3 
관련 문제