original page : http://ja.doukaku.org/179/
起動すると、標準出力に1秒毎に'a'の1文字を出力し続けるプログラムで、 以下の条件を満たすものを「どう書く?」
* 'q'キーが押されるとプログラムは終了する
* 出力中に'p'キーが押されると一時停止する
* 一時停止中に'p'キーが押されると出力を再開する
#7118
original page : http://ja.doukaku.org/comment/7118/
R的にはちょっと難しいお題ですね。
キーイベントを取得するにはgetGraphicsEvent()という関数がありますが、実行中はR本体の処理がブロックされてしまって、肝心の"a"を出す処理が実行できないようです。
代わりにR
TclTkを使うことにしました。相変わらずWindowsのRguiはコンソール入出力がよろしくないので、Rtermから実行してください。
library(tcltk) tt <- tktoplevel() pause.flag <- FALSE quit.flag <- FALSE tkbind(tt, "<Key>", function(K){ switch(K, q = {quit.flag <<- TRUE; }, p = {pause.flag <<- !pause.flag} )}) repeat{ if(!pause.flag){ writeLines("a") } if(quit.flag){ tkdestroy(tt) quit(save="no") } Sys.sleep(1) }