R 可执行文件不工作,但脚本工作正常

R executable not working, but script works fine

我创建了一个脚本,当我从 Rstudio 运行 它时它可以正常工作。

但是,当我将它另存为 "Rexec" 并尝试通过双击 运行 它时,它只能部分启动。

我得到一个导航 gui pop-up 到初始文件位置,但之后没有任何反应。带有各种消息的黑框显示一些 quickfire 消息并在我看到发生了什么之前关闭。

我有 运行 另一个更大的脚本,没有问题。

这个脚本的不同之处在于,当我通过 RStudio 运行 它时,有多个交互式 gui 对话框 pop-up 需要我的一些输入,即选择列 headers 和 select.list 或通过使用将文件保存为 png:

png.filename <- tclvalue(tkgetSaveFile(initialfile = "choose name.png",
                                       filetypes = "{ {PNG Files} {.png} }"))

如何检查导致问题的原因,即输出错误日志?

我找到了这个如何获取错误日志的示例:Output error/warning log (txt file) when running R script under command line

我刚刚将这些行添加到我的代码中,如下所示:

zz <- file("error_log.text", open="wt")
sink(zz, type="message")

....code chunk....

sink(type="message") 
close(zz)

这会将一个文本文件写入包含 "foo_script.Rexec" 的目录,其中包含一些包含以下内容的消息:

Error in select.list(names(MQ.file.DF), multiple = TRUE, title = "Choose variables to remove",  : 
  select.list() cannot be used non-interactively
Execution halted

select.list() 似乎是问题所在,因此进程崩溃了。

解决方法 - 我改为使用 tk_select.list,这似乎解决了问题。脚本运行没有崩溃。我有点喜欢 select.list,因为它支持单击和拖动光标以突出显示多列,而使用 tk_select.list 时,您必须一次单击一个。只要它运行正常,我会再点击几下。我希望这对遇到类似问题的人有所帮助。