이전에 R에서 진행표시줄(progress bar) 을 만들기 위해 windows OS 에서 작동되는
winProgressBar()
함수에 대해서 설명한 적이 있다.
아쉽게도 윈도우 이외 다른 운영체계에서는 이 함수가 지원되지
않는다.
결국 상호호환의 문제로 다른 방안을 찾아보아야 하는 상황이 일어났는데
어떠한 운영체계 (,
,
)라 하더라도 R에서
진행표시줄을 나타내기 위한 방법을 찾아 정리해보고자 한다.
지금까지 찾아본 방법중 가장 좋은 것은 progress package 를 이용하는 것 이었다.
example code
이전에 포스팅한 글을 빌려 똑같은 예제를 이용해 보겠다.
임의의 코드를 1000번 반복하는 for문 이며, 반복의 대상이 되는 코드의
내용물 은 상당히 복잡할 것으로 가정한다.
예를 들어 반복의 대상이 되는 코드를 한번 수행하는데 걸리는 시간이
iteration 에 상관없이 공통으로 0.01초 라면 for 문이 모두 돌아가기 까지
소요되는 시간은 10초가 된다.
이러한 가정을 정확하게 구현하는 코드가 바로 아래 같다.
for(i in seq(1000)){
Sys.sleep(0.01)
}
progress package 를 이용해 진행표시줄 만들기
progress package 를 준비하고 로드한다.
# install.packages("progress")
library("progress")
그 다음 위의 예제코드에 몇 가지 코드를 덧붙인다.
<- progress_bar$new(total = 1000)
pb
for(i in seq(1000)){
$tick()
pbSys.sleep(0.01)
}
추가된 코드는 2줄이다.
우선 첫번째 progress bar 에 대한 사전정보가 담긴 객체 pb
를 만든다.
사전정보는 iteration 의 최대값을 넣어준다.
즉 우리예시의 반복문은 1000회를 반복하므로 total 인자에 1000을
부여한다.
그렇게 만든 객체 pb
를 반복문 안에 심어주고 이를 째깍째깍
거릴 수 있도록 tick()
모듈을 심어준다.
이것이 가장 기본적인 사용방법이다.
실행해보면 R console 에 다음과 같이 진행표시줄이 나타나고, 점진적으로 진행되는 에니메이션을 볼 수 있다.
추가된 2줄 코드의 문법형태가 Python을 사용하는 것처럼 닮았다.
R6 Object 라고 설명되어 있는데, 때문에 다양한 특별기능을 자유롭게
조절하여 사용 할 수 있는 듯 하다.
그 방법에 대해선 ?progress_bar
를 통해 확인할 수 있으며,
예제코드들을 활용하면 상황에 맞게 커스터마이징도 가능할 듯 싶다.