【问题标题】:R pop-up boxes not working when run in terminal在终端中运行时R弹出框不起作用
【发布时间】:2018-05-02 18:57:19
【问题描述】:

我正在使用 svDialogs(zenity 的 R 包装库)来创建 GUI 弹出框,当我通过 R studio 或 R 终端会话(运行 Ubuntu 16.04)运行代码时,这可以正常工作。

一个最小的例子是:

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

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

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

终端显示库已加载,并没有显示错误信息:但没有弹出弹窗!如果我在调用 dlgMessage 之后添加了额外的行,则该行会运行。即如果我运行修改后的代码

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

然后第二行确实显示在终端窗口中(即代码没有在 dlgMessage 处崩溃)。

对于不依赖 dlgMessage 的解决方案(如果有解决方法)感到高兴:我之前曾尝试使用 system() 通过 R 本地使用 Zenity,但无法使其正常工作。

【问题讨论】:

    标签: r popup zenity


    【解决方案1】:

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

    在非交互模式下运行时,R 不会显示任何弹出框。默认情况下,在终端运行代码时,R 以非交互模式运行。按照上面的文档,这可以通过在linux中使用命令来覆盖

    R --vanilla --interactive < "path/to/file.R"
    

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

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 2016-05-16
      • 2021-06-09
      • 2020-01-08
      • 2023-03-24
      • 2014-05-25
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多