我正在尝试在一个脚本中使用R,它将充当一个简单的命令行绘图工具。即用户管道在csv文件中,他们得到一个情节。我可以得到R罚款并通过各种临时文件阴谋来显示情节,但我遇到了障碍。在用户关闭窗口之前,我无法弄清楚如何让R继续运行。
如果我绘制并退出,则绘图立即消失。如果我绘制并使用某种无限循环,用户就无法关闭该图;他必须使用我不喜欢的中断退出。我看到有一个getGraphicsEvent函数,但它声称不支持该设备(X11)。无论如何,它似乎实际上不支持onClose事件,只有onMouseDown。
关于如何解决这个问题的任何想法?
编辑:感谢Dirk提供了查看tk界面的建议。这是我的测试代码:
require(tcltk)
library(tkrplot)
## function to display plot, called by tkrplot and embedded in a window
plotIt<-function(){ plot(x=1:10, y=1:10) }
## create top level window
tt<-tktoplevel()
## variable to wait on like a condition variable, to be set by event handler
done <- tclVar(0)
## bind to the window destroy event, set done variable when destroyed
tkbind(tt,"<Destroy>",function() tclvalue(done) <- 1)
## Have tkrplot embed the plot window, then realize it with tkgrid
tkgrid(tkrplot(tt,plotIt))
## wait until done is true
tkwait.variable(done)
答案 0 :(得分:5)
您需要具有独特事件循环的东西---最好的可移植解决方案是依赖于(已包含的)tcltk
包。从它的演示开始。
最简单的情况可能是
> library(tcltk)
> tk_messageBox(message="Press a key")
弹出一个框,你需要确认继续。