2015-02-04 16 views
5

Sto scrivendo un pacchetto R con un codice C++ che esegue lunghi calcoli. All'interno del codice C++, sto usando Rprintf() per produrre informazioni. Ho provato a sopprimere l'output da R con suppressMessages(), ma questo non funziona, i messaggi appaiono ancora all'interno della sessione R.R: sopprimere messaggi da Rprintf in C++

Ho trovato alcune domande simili, in cui le persone utilizzavano printf anziché Rprintf, ma sto già utilizzando Rprintf. Ho anche provato R_ShowMessage(), che viene anche visualizzato immediatamente e non soppresso da suppressMessages().

Ecco qualche esempio di codice C++:

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

E la funzione che chiama questo codice:

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

Ora, il seguente codice R non sarà eliminare l'output:

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

Sto usando R versione 3.1.0

Apprezzo qualsiasi aiuto!

+0

Potrebbe esserci il codice C++? –

+0

Ho aggiunto un esempio. – chakalakka

risposta

1

Uso capture.output al posto di suppressMessages:

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

L'uscita viene memorizzato in carattere vettoriale b invece di essere stampato.

+0

Voglio usare suppressMessages, perché è quello che farebbe qualsiasi utente di questo codice. Il codice fa parte di un pacchetto R e quindi qualsiasi utente userebbe soppressione messaggi per sopprimere l'output. – chakalakka

Problemi correlati