R:构建一个简单的命令行绘图工具/捕获窗口关闭事件

fra*_*nkc 8 x11 plot r

我试图在一个脚本中使用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)
Run Code Online (Sandbox Code Playgroud)

Dir*_*tel 5

你需要一个具有独特事件循环的东西---最好的便携式解决方案是依赖于(已经包含的)tcltk包.从它的演示开始.

最简单的情况可能是

> library(tcltk)
> tk_messageBox(message="Press a key")
Run Code Online (Sandbox Code Playgroud)

弹出一个框,你需要确认继续.