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秒ごとに新しい行が表示されることもわかりました。しかし、私はそれをRGUIで実行することを好みます。
なぜこれが起こっているのか誰かに教えてもらえれば幸いです。
私はMacを使用しています。