R: suppressMessages из Rprintf в переполнении стека

Я пишу 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

Я ценю любую помощь!

6

Решение

использование capture.output на месте suppressMessages:

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

Затем вывод сохраняется в символьном векторе b вместо того, чтобы быть напечатанным.

1

Другие решения


По вопросам рекламы [email protected]