在终端中 运行 时,R 弹出框不起作用

R pop-up boxes not working when run in terminal

我正在使用 svDialogs(zenity 的 R 包装器库)创建 GUI 弹出框,当我通过 R studio 或 R 终端会话 运行 代码时,这工作正常(运行宁Ubuntu16.04).

一个最小的例子是:

library(svDialogs)
dlgMessage("Hello Whosebug!")

但是,当我 运行 代码直接通过终端时它不起作用:

Rscript --vanilla -e 'source("path/to/file.R")'

终端显示库已加载,并没有显示错误信息:但是弹窗没有出现!如果我在调用 dlgMessage 后添加一行,那行 运行s。即如果我 运行 修改后的代码

library(svDialogs)
dlgMessage("Hello Whosebug!")
print("Goodbye Whosebug!")

然后第二行确实显示在终端中 window(即代码不会在 dlgMessage 处崩溃)。

很高兴解决方案不依赖于 dlgMessage,如果有解决方法:我以前尝试过使用 system() 通过 R 本机使用 Zenity,但无法让它工作。

R 在交互或非交互模式下可以是 运行,默认值取决于是否假设有人工操作员,请参阅 interactive 的文档。

当运行处于非交互模式时,R不会显示任何弹出框。默认情况下,当 运行ning 代码在终端中时,R 运行s 处于非交互模式。按照上面的文档,可以使用 linux

中的命令覆盖它
R --vanilla --interactive < "path/to/file.R"

类似地在 Windows 中使用 --essRterm.exe