2015-02-04 8 views
5

Ich schreibe ein R-Paket mit einigen C++ - Code lange Berechnungen ausgeführt. Innerhalb des C++ - Codes verwende ich Rprintf(), um Informationen auszugeben. Ich habe versucht, die Ausgabe von R mit suppressMessages() zu unterdrücken, aber das funktioniert nicht, die Nachrichten erscheinen immer noch in der R-Sitzung.R: suppressMessages von Rprintf in C++

Ich habe einige ähnliche Fragen gefunden, wo Leute printf anstelle von Rprintf benutzt haben, aber ich benutze bereits Rprintf. Ich habe auch versucht R_ShowMessage(), die auch sofort angezeigt und nicht von suppressMessages() unterdrückt wird. Hier

ist einige Beispiel C++ Code:

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

Und die Funktion, die diesen Code ruft:

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

nun die folgenden R-Code wird nicht unterdrücken die Ausgabe:

> suppressMessages(test.print()) 
Try to suppress me! 
Try to suppress me, too! 

Ich verwende R Version 3.1.0

Ich freue mich über jede Hilfe!

+0

Können Sie uns den C++ Code geben? –

+0

Ich habe ein Beispiel hinzugefügt. – chakalakka

Antwort

1

Verwendung capture.output anstelle von suppressMessages:

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

Dann wird die Ausgabe in Zeichenvektor b gespeichert ist anstatt gedruckt zu werden.

+0

Ich möchte suppressMessages verwenden, denn das würde jeder Benutzer dieses Codes tun. Der Code ist Teil eines R-Pakets und somit würde jeder Benutzer suppressMessages verwenden, um die Ausgabe zu unterdrücken. – chakalakka