2012-11-10 8 views
5

Ho codificato un campionatore MCMC utilizzando Rcpp (in particolare, RcppArmadillo). Vorrei che il mio campionatore stampasse messaggi di stato periodici sulla console R, ma i messaggi appaiono tutti contemporaneamente quando termina il campionatore. L'istruzione di output è:L'output Rcout viene visualizzato immediatamente sulla console R

Rcout << "Progress => " 
     << double(iterations)/double(maxit) * 100 
     << "%" 
     << std::endl; 

Questo codice può essere aumentato in modo che l'uscita venga visualizzata immediatamente sulla console R? versione

R: 2.14.1

piattaforma: Darwin 9.8.0

Rcpp versione: 0.9.10

+1

Potrebbe essere necessario svuotare il buffer di uscita della console. In C++ che è std :: flush, forse c'è un equivalente Rcpp? – Thomas

+1

Forse chiamare 'R_FlushConsole' lo farà –

risposta

2

Questo comportamento è stato implementato in Rcpp 0.10.0 (di prossima pubblicazione) seguendo i consigli di answers to this question.

Nel frattempo, è possibile chiamare manualmente R_FlushConsole

+0

+1 - molto bella aggiunta –

+0

Mentre ero lì. Ho implementato 'Rcerr' –

+0

Né std :: flush né R_FlushConsole risolve il problema. L'emissione è ancora in ritardo fino al termine della funzione. – user1815351

0

flush() e flush.console() sono ancora rotto. R 3.0.2/OSX

Problemi correlati