Я пишу R-пакет с некоторым кодом C ++, выполняющим длительные вычисления. Внутри кода C ++ я использую Rprintf () для вывода информации. Я попытался подавить вывод из R с помощью suppressMessages (), но это не работает, сообщения все еще появляются в сеансе R.
Я нашел несколько похожих вопросов, где люди использовали printf вместо Rprintf, но я уже использую Rprintf. Я также попытался R_ShowMessage (), который также сразу отображается и не подавляется suppressMessages ().
Вот пример кода C ++:
#include <R.h>
extern "C" {
void R_testprint()
{
Rprintf("Try to suppress me!\n");
R_ShowMessage("Try to suppress me, too!");
}
}
И функция, которая вызывает этот код:
test.print <- function(string) {
res <- .C("R_testprint")
}
Теперь следующий код R не будет подавлять вывод:
> suppressMessages( test.print() )
Try to suppress me!
Try to suppress me, too!
Я использую R версии 3.1.0
Я ценю любую помощь!
использование capture.output
на месте suppressMessages
:
b <- capture.output( test.print() )
Затем вывод сохраняется в символьном векторе b
вместо того, чтобы быть напечатанным.