7

我正在编写一个 R 包,其中包含一些运行冗长计算的 C++ 代码。在 C++ 代码中,我使用 Rprintf() 来输出信息。我尝试使用 suppressMessages() 抑制 R 的输出,但这不起作用,消息仍然出现在 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

我很感激任何帮助!

4

1 回答 1

1

capture.output代替suppressMessages: _

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

然后将输出存储在字符向量b中,而不是打印出来。

于 2016-09-13T06:26:31.440 回答