예상 모델 테스트와 함께 거대한 데이터 세트의 1000+ 루프로 인해 실행하는 데 시간이 걸리는 함수를 작성했습니다.함수 내 메시지 (상태에 대한)가 콘솔에 즉시 표시되지 않음
상태를 알기 위해 함수가 호출되는 동안 함수의 for-loop 안에 message
명령을 사용합니다. 문제는 즉시 표시하는 대신 기능 완료 후에 콘솔에 모든 메시지가 표시된다는 것입니다. 그래서 그것은 도움이되지 않습니다 :)
나는 Stackoverflow에 대한 해결책을 찾으려고했지만 하나를 찾지 못했습니다. 예를 들어 "showing a status message in R"질문을 보았습니다. 이 질문에 대한 모든 답변과 예제 코드는 함수가 즉시 처리 된 후에도 콘솔에 텍스트 만 제공합니다.
해결 방법? 콘솔에 텍스트 message
의 즉시 인쇄를 방지하는 R 설정이 있습니까?
참고 : 아래 예제는 내 기능과 동일한 결과를 제공합니다. 함수를 처리 한 후 텍스트를 보여줍니다.
예 1 (여호수아 울리히) :
for(i in 1:10) {
Sys.sleep(0.2)
# Dirk says using cat() like this is naughty ;-)
#cat(i,"\r")
# So you can use message() like this, thanks to Sharpie's
# comment to use appendLF=FALSE.
message(i,"\r",appendLF=FALSE)
flush.console()
}
예 2 (타일러) :
test.message <- function() {
for (i in 1:9){
cat(i)
Sys.sleep(1)
cat("\b")
}
}
편집 : 첫 번째 예제는 작동하지 않습니다 ('플러시 콘솔'문제였다). 하지만 테스트를했을 때, 어떤 이유로 플러시 콘솔을 주석 처리했습니다 : S
두 번째 예제에서 문자열에 줄 바꿈이 없으므로 줄을 한 번에 인쇄 할 수 없으므로 stdout을 플러시해야합니다. 'flush (stdout())'이 트릭을해야한다. – fotNelton