我创建了一个依赖于 Rcpp 的 R 包。这个包中的一个函数应该在每 n 次迭代时显示打印语句。所以我希望每隔几秒钟在 R 控制台上看到一个新行。
奇怪的是,当我在 R GUI 中运行我的函数时,光标变成了一个加载轮,R“几乎”冻结了。计算完成后加载轮消失一次。
这种情况的最小示例总结如下:
library(inline)
library(Rcpp)
test <- cxxfunction(
signature(),
body= '
RNGScope scope;
for (int i = 0; i < 100; i++)
{
sleep(1); // sleep one second at each iteration. this sleep is
// replaced by something in my code
if (i%20==0) Rprintf("\v%d iterations are done...",i);
}
return wrap(1);
' ,
plugin="Rcpp"
)
test()// freeze for 100 seconds!
我还发现,如果代码在终端上运行,新行会按我的预期每 20 秒出现一次。但我更喜欢在 R GUI 上运行它。
如果有人能告诉我为什么会这样,我将不胜感激。
我正在使用 Mac。