2015-02-04 16 views
5

오랜 계산을 실행하는 C++ 코드로 R 패키지를 작성하고 있습니다. C++ 코드에서 Rprintf()를 사용하여 정보를 출력합니다. suppressMessages()를 사용하여 R의 출력을 억제하려고했으나 작동하지 않습니다. 메시지는 여전히 R 세션 내에 나타납니다.R : suppressMessages from Rprintf from C++

Rprintf 대신 printf를 사용하는 비슷한 질문이 있지만 이미 Rprintf를 사용하고 있습니다. 나는 또한 R_ShowMessage()를 시도했다. R_ShowMessage()도 즉시 표시되고 suppressMessages()에 의해 표시되지 않는다.

> suppressMessages(test.print()) 
Try to suppress me! 
Try to suppress me, too! 
다음 R 코드 출력을 억제하지 않을 지금

test.print <- function(string) { 
    res <- .C("R_testprint") 
} 

이 코드를 호출

#include <R.h> 
extern "C" { 
void R_testprint() 
{ 
    Rprintf("Try to suppress me!\n"); 
    R_ShowMessage("Try to suppress me, too!"); 
} 
} 

그 기능 : 여기

일부 예 C++ 코드

R 버전 3.1.0을 사용 중입니다.

나는 어떤 도움을 주셔서 감사합니다! suppressMessages 대신에

+0

C++ 코드를 사용해 주시겠습니까? –

+0

예제를 추가했습니다. – chakalakka

답변

1

사용 capture.output : 다음 출력이 문자 벡터 b 대신에

b <- capture.output(test.print()) 

저장되어 인쇄된다.

+0

suppressMessages를 사용하고 싶습니다. 왜냐하면 이것이이 코드의 사용자가하는 일이기 때문입니다. 이 코드는 R 패키지의 일부이므로 모든 사용자는 suppressMessages를 사용하여 출력을 억제합니다. – chakalakka