while
루프가 R의 무한 루프에 걸렸을 때 루프를 인식하는 가장 좋은 방법은 무엇입니까?루프가 무한 동안 종료 됨
diff_val = Inf
last_val = 0
while(diff_val > 0.1){
### calculate val from data subset that is greater than the previous iteration's val
val = foo(subset(data, col1 > last_val))
diff_val = abs(val - last_val) ### how much did this change val?
last_val = val ### set last_val for the next iteration
}
목표는 val
가 점점 더 가까이 안정적인 값으로 점진적으로 얻을 것입니다, 그리고 val
마지막 반복에서 val
0.1 내에있을 때, 그것은 충분히있는 것으로 간주 : 여기
while
루프에서 해제됩니다. 내 문제는 일부 데이터 세트에서
val
이 두 값 사이에서 앞뒤로 번갈아 붙어 있다는 것입니다. 예를 들어, 27.0에서 27.7 사이에서 앞뒤로 반복합니다. 따라서 결코 안정화되지 않습니다. 루프가 발생하면 어떻게하면
while
루프를 깰 수 있습니까?
나는 break
을 알고 있지만 사용법을 알리는 방법을 모른다. 나는 일하는 것이 전에 두 반복의 값 잡고 상상,하지만 난이 반복 전에 값을 유지하는 방법을 알고하지 않습니다 ...
while(diff_val > 0.1){
val = foo(subset(data, col1 > last_val))
diff_val = abs(val - last_val)
last_val = val
if(val == val_2_iterations_ago) break
}
어떻게
val_2_iterations_ago
을 만들 수 있습니까?
재현 할 수없는 코드에 사과드립니다. 상황을 복제하는 데 필요한 실제 foo()
과 data
은 공유 할 수있는 것이 아니며 제어 흐름을 통해이 문제를 파악하는 데 중요하지 않습니다.
프로세스가 일반적으로 감소합니까? 몇 번이나 (임의의) 한도를 초과 할 때 얼마나 많이 줄어들지 않고 중단되는지 추적 할 수 있습니다. – r2evans