2017-12-31 29 views
3

R 콘솔에서이 코드 청크 내부억제 메시지,하지만 나는 현재 다음 헤더 사용

```{r, message=FALSE} 
foo <- function(x) message(x) 
for(i in 1:10) foo(i) 
``` 

는, 시뮬레이션 시나리오를 통해 루프가 현재 실행 시나리오의 상태를 인쇄 message() 기능,가 .

나는 RStudio 및 최종 HTML 출력에 표시되는 메시지를 표시하지 않으려하지만 시뮬레이션 진행 상황을 제어하고 콘솔에서 message() 출력을보고 싶습니다. 달성 가능합니까? 어쩌면 다른 인자/함수가 있을까요?

+1

[최소 재현 가능한 예를 먼저 제시하십시오 (https://yihui.name/ko/2017/09/the-minimal-reprex-paradox/)? 나는'message = FALSE'가 당신이 원하는 것을 정확하게 의미하기 때문에 묻습니다. 메시지를 콘솔에 작성하십시오. 작동하지 않으면 잘못된 것이있을 것입니다. –

+0

아니,이 방법은 분명히 작동하지 않지만, 당신이 물어 봤기 때문에 간단한 예제를 추가했습니다. – user2530062

+0

HTML 파일을 실제로 컴파일하는 동안 메시지가 출력 될 수 있다고 생각합니다. RStudio 내에서 코드 정확성을 평가하기 위해 뜨개질을하지 않고 코드를 실행하는 경우 상황을 다루지는 않지만 아직 코드 다운은 코드 다운의 코드 조각 안에 있습니다. – user2530062

답변

0

파일에 상태를 추가하거나 추가 할 수 있습니다 (임시 해결 방법이므로 더 직접적인 대답이 있어야합니다). 예를 들어

:

file <- file("status.txt", open = "wt") 
sink(file, type = "message") 
message("all good") 

이 예제 메시지에서 표시되지 않습니다 - 그것은 status.txt 파일에 기록됩니다.

당신이이 예제를 시도 할 수 있습니다 특정 기능을 사용하여 세트 반복하고 년 :

foo <- function(x) { 
    message(x) 
} 

file <- file("status.txt", open = "wt") 
sink(file, type = "message") 
for(i in 1:3) { 
    foo(i) 
} 

기능 foo를 (메시지) 값을 반환해야합니다, 그러나 그것은 status.txt 파일에 추가합니다.

-f 인수와 함께 bash tail 명령을 사용하여 status.txt 파일의 변경 사항을 추적 할 수 있습니다. 먼저 R을 백그라운드로 보내고 콘솔에 tail -f status.txt을 사용하십시오.

0

한 가지 방법은 파일의 시작 부분에이 방법을 사용하는 것입니다.

mymessage <- function (text) { 
    if(knitr::opts_knit$get('out.format') != NULL) message(text) 
} 

knitr에 속하는지 알 수있는 다양한 방법이 있습니다. 최신 버전은 knitr::is_latex_output 및 이와 유사합니다.

+0

나는 이것이 어디로 가고 있는지 알 것 같지만, (인수는 길이가 0 인) 작동하지 않으며'=='이 있어야한다고 생각합니까? – user2530062

+0

필자는'! is.null()'(분명히)과 비교를 바꿨으므로 지금은 오류가 없습니다. 하지만 어쨌든 작동하지 않습니다. – user2530062

관련 문제