【发布时间】:2018-05-26 11:52:54
【问题描述】:
在调试 Rcpp 时,我通常发现自己不得不使用老式的 Rprintf 语句来观察变量和程序流(根据 @RomainFrancois 在 this answer 上的评论)。但是,对于大型循环等情况,Rprintf 的过多快速输出可能会在控制台顶部迅速消失,我希望能够暂停执行,直到我按下一个键。
如果我尝试在 c++ 脚本中使用 std::cin.get() 调用并从 Rstudio 运行它,控制台就会卡住,无法将按键直接指向等待它们的 c++ 调用。注意这是一个 RSudio 特定的问题 - 从终端窗口运行相同的代码时不会发生这种情况,它按预期工作。
一个简单的可重现示例:
library(Rcpp)
cppFunction('
void test() {
for (int i = 0; i < 100; i++) {
Rprintf(\"i = %i\\n\", i);
std::cin.get();
}
}
')
test()
我怎样才能让它工作,以便我可以交互式地逐步通过 Rcpp 函数来调试它们?
【问题讨论】: