【问题标题】:R: suppressMessages from Rprintf in C++R:从 C++ 中的 Rprintf 抑制消息
【发布时间】:2015-04-04 07:22:54
【问题描述】:

我正在编写一个 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

感谢您的帮助!

【问题讨论】:

  • 你可以给我们 C++ 代码吗?

标签: c++ r printf suppress


【解决方案1】:

使用capture.output 代替suppressMessages

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

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

【讨论】:

  • 我想使用suppressMessages,因为任何使用此代码的用户都会这样做。该代码是 R 包的一部分,因此任何用户都可以使用 suppressMessages 来禁止输出。
  • 如果输出需要是 data.frame 而不是字符向量怎么办?
猜你喜欢
  • 2012-02-09
  • 2013-10-07
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
相关资源
最近更新 更多